// Last edited on 2013-12-11 06:09:16 by stolfilocal
// Processed by remove-cam-lights

background{ color rgb < 0.75, 0.80, 0.85 > }

#include "colors.inc"
#include "textures.inc"
#include "shapes.inc"
#include "stones.inc"
#include "metals.inc"
#include "transforms.inc"

#declare tx_plastico =
  texture{
    pigment{ color rgb < 0.10, 0.80, 1.00 > }
    finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 }
  }

#declare tx_fosca =
  texture{
    pigment{ color rgb < 1.00, 0.80, 0.10 > }
    finish{ diffuse 0.9 ambient 0.1 }
  }

#declare tx_espelho =
  texture{
    pigment{ color rgb < 1.00, 0.85, 0.30 > }
    finish{ diffuse 0.2 reflection 0.7*< 1.00, 0.85, 0.30 > ambient 0.1 }
  }

#declare tx_vidro =
  texture{
    pigment{ color rgb < 0.85, 0.95, 1.00 > filter 0.70 }
    finish{ diffuse 0.03 reflection 0.25 ambient 0.02 specular 0.25 roughness 0.005 }
  }

#declare tx_xadrez =
  texture{
    pigment{ checker color rgb < 0.10, 0.32, 0.60 >, color rgb < 1.00, 0.97, 0.90 > }
    finish{ diffuse 0.9 ambient 0.1 }
    scale 2.0
  }
#declare vermelho =
  texture{
    pigment{ checker color rgb < 1, 0, 0 >, color rgb < 1.00, 0, 0 > }
    finish{ diffuse 0.9 ambient 0.1 }
    scale 2.0
  }

#declare raio = 2.000;

#declare caixa =
        box{<0,0,0> <1,1,1>}

#declare visor =
        box{<0.25,0.25,1> <2.25,4.75,1.05>}
#declare visor2 =
        box{<0.5,1,1.05> <1.5,4,1.1>}

#declare peca_1 =
        box{<0,0,0><1,1,1>}

#declare chao =
  box{ <-20,-20,-1>, <+20,+20,0> }

#include "eixos.inc"
#include "retalho.inc"

#declare roda =
        difference{
                cylinder{<0,0,0>,<0,0,1>,3}
                cylinder{<-0.1,-0.1,-0.1><0.1,0.1,1.1   >,2.5}
        }

#declare torre =
        union{
                box{<-1,-1,0> <1,1,3>}
                cone{<0,0,3>, 1, <0,0,4>, 0}
        }

#macro meio_sofa(m)
union{

        #local A = array[4][4]
        #local A[0][0]  = <0,0,4>;
        #local A[0][1] = <0,2,-1>;
        #local A[0][2] = <0,4,-1>;
        #local A[0][3] = <0,5,0>;

        #local A[1][0]  = <1,0,4>;
        #local A[1][1] = <1,2,-1>;
        #local A[1][2] = <1,4,-1>;
        #local A[1][3] = <1,5,0>;

        #local A[2][0]  = <2,0,4>;
        #local A[2][1] = <2,2,-1>;
        #local A[2][2] = <2,4,-1>;
        #local A[2][3] = <2,5,0>;

        #local A[3][0]  = <3,0,4>;
        #local A[3][1] = <3,2,-1>;
        #local A[3][2] = <3,4,-1>;
        #local A[3][3] = <3,5,0>;

        #local B = array[4][4]
        #local B[0][0]  = A[0][3];
        #local B[0][1] = <0,2,1>;
        #local B[0][2] = A[0][1];
        #local B[0][3] = A[0][0];

        #local B[1][0]  = A[1][3];
        #local B[1][1] = <1,2,0.5>;
        #local B[1][2] = <1,4,1>;
        #local B[1][3] = A[1][0];

        #local B[2][0]  = A[2][3];
        #local B[2][1] = <2,2,0.5>;
        #local B[2][2] = <2,4,1>;
        #local B[2][3] = A[2][0];

        #local B[3][0]  = A[3][3];
        #local B[3][1] = <3,2,1>;
        #local B[3][2] = A[3][1];
        #local B[3][3] = A[3][0];

        #local C = array[4][4]
        #local C[0][0]  = A[0][3];
        #local C[0][1] = <0,2,1>;
        #local C[0][2] = A[0][1];
        #local C[0][3] = A[0][0];

        #local C[1][0]  = A[1][3];
        #local C[1][1] = <1,2,0.5>;
        #local C[1][2] = <1,4,1>;
        #local C[1][3] = A[1][0];

        #local C[2][0]  = A[2][3];
        #local C[2][1] = <2,2,0.5>;
        #local C[2][2] = <2,4,1>;
        #local C[2][3] = A[2][0];

        #local C[3][0]  = A[3][3];
        #local C[3][1] = <3,2,1>;
        #local C[3][2] = A[3][1];
        #local C[3][3] = A[3][0];

        object{

        retalho (A[0][0],A[0][1],A[0][2],A[0][3],
                                                                                        A[1][0],A[1][1],A[1][2],A[1][3],
                                                                                        A[2][0],A[2][1],A[2][2],A[2][3],
                                                                                        A[3][0],A[3][1],A[3][2],A[3][3],
                                                                                        0.01,texture{tx_fosca},texture{tx_fosca}) translate<0,1,5>
        }
        object{
        retalho (B[0][0],B[0][1],B[0][2],B[0][3],
                                                                                        B[1][0],B[1][1],B[1][2],B[1][3],
                                                                                        B[2][0],B[2][1],B[2][2],B[2][3],
                                                                                        B[3][0],B[3][1],B[3][2],B[3][3],
                                                                                        0.01,texture{tx_fosca},texture{tx_fosca}) translate<0,1,5>
}
        object{
        retalho (C[0][0],C[0][1],C[0][2],C[0][3],
                                                                                        C[1][0],C[1][1],C[1][2],C[1][3],
                                                                                        C[2][0],C[2][1],C[2][2],C[2][3],
                                                                                        C[3][0],C[3][1],C[3][2],C[3][3],
                                                                                        0.01,texture{tx_fosca},texture{tx_fosca}) translate<0,1,5>

}

}
#end

union{
        object {meio_sofa(5)}
        object {meio_sofa(5) scale <-1,-1,-1>}

        }

object{ chao translate < 0,0,-4 > texture{ PinkAlabaster }}
object{ roda rotate <0,90,0 > texture{ PinkAlabaster }}
object{ roda rotate <0,90,0 > translate <0,8,0> texture{ PinkAlabaster }}

#include "camlight.inc"
#declare centro_cena = < 0.00, 5.00, 2.00 >;
#declare raio_cena = 10.0;
#declare dir_camera = < 5.00, 0,3 >;
#declare dist_camera = 40.0;
#declare intens_luz = 1.00;
camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)