// Last edited on DATE TIME by USER
// Processed by remove-cam-lights

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

#declare tx_red =
  texture{
    pigment{ color rgb < 0.90, 0.05, 0.05 > }
    finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 }
  }

#declare tx_yellow =
  texture{
    pigment{ color rgb < 0.93, 0.79, 0.00 > }
    finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 }
  }

#declare tx_green =
  texture{
    pigment{ color rgb < 0.05, 0.90, 0.05 > }
    finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 }
  }

#declare tx_blue =
  texture{
    pigment{ color rgb < 0.05, 0.05, 0.90 > }
    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
  }

#include "retalho.inc"

#declare raio = 2.000;

#declare roda=
                cylinder{
                        < 0.00, 0.00, 0.00 >
                        < 0.00, 0.00, 0.10 >
                        0.8
                        texture{tx_red}
                        }

#macro sofa(tam)
        union{

#local A=array[4][4];
#local B=array[4][4];
#local C=array[4][4];
#local D=array[4][4];

#local A[0][0]=<2.5,-2,1>;
#local A[0][1]=<2.5,-0.5,1>;
#local A[0][2]=<2.5,+0.5,1>;
#local A[0][3]=<2.5,+2,1>;
#local A[1][0]=<2.35,-2,0.2>;
#local A[1][1]=<2.35,-0.5,0.2>;
#local A[1][2]=<2.35,+0.5,0.2>;
#local A[1][3]=<2.35,+2,0.2>;
#local A[2][0]=<1.65,-2,0.2>;
#local A[2][1]=<1.65,-0.5,0.2>;
#local A[2][2]=<1.65,+0.5,0.2>;
#local A[2][3]=<1.65,+2,0.2>;
#local A[3][0]=<1.5,-2,1>;
#local A[3][1]=<1.5,-0.5,1>;
#local A[3][2]=<1.5,+0.5,1>;
#local A[3][3]=<1.5,2,1>;

#local B[1][0]=<2.35,-2,1.8>;
#local B[1][1]=<2.35,-0.5,1.8>;
#local B[1][2]=<2.35,+0.5,1.8>;
#local B[1][3]=<2.35,+2,1.8>;
#local B[2][0]=<1.65,-2,1.8>;
#local B[2][1]=<1.65,-0.5,1.8>;
#local B[2][2]=<1.65,+0.5,1.8>;
#local B[2][3]=<1.65,+2,1.8>;

#local C[0][0]=<2,-2,0.5>;
#local C[0][1]=<0.75,-2,0.5>;
#local C[0][2]=<-0.75,-2,0.5>;
#local C[0][3]=<-2,-2,0.5>;
#local C[1][0]=<2,-2.2,1.5>;
#local C[1][1]=<0.75,-2.2,1.5>;
#local C[1][2]=<-0.75,-2.2,1.5>;
#local C[1][3]=<-2,-2.2,1.5>;
#local C[2][0]=<2,-2.5,2.5>;
#local C[2][1]=<0.75,-2.5,2.5>;
#local C[2][2]=<-0.75,-2.5,2.5>;
#local C[2][3]=<-2,-2.5,2.5>;
#local C[3][0]=<2,-3.25,2.75>;
#local C[3][1]=<0.75,-3.25,2.75>;
#local C[3][2]=<-0.75,-3.25,2.75>;
#local C[3][3]=<-2,-3.25,2.75>;

#local D[0][0]=<2,2,0.5>;
#local D[0][1]=<0.75,2,0.5>;
#local D[0][2]=<-0.75,2,0.5>;
#local D[0][3]=<-2,2,0.5>;
#local D[1][0]=<2,0.75,0.25>;
#local D[1][1]=<0.75,0.75,0.25>;
#local D[1][2]=<-0.75,0.75,0.25>;
#local D[1][3]=<-2,0.75,0.25>;
#local D[2][0]=<2,-0.75,0.25>;
#local D[2][1]=<0.75,-0.75,0.25>;
#local D[2][2]=<-0.75,-0.75,0.25>;
#local D[2][3]=<-2,-0.75,0.25>;

object{
                retalho(D[0][0],D[0][1],D[0][2],D[0][3],
                        D[1][0],D[1][1],D[1][2],D[1][3],
                        D[2][0],D[2][1],D[2][2],D[2][3],
                        C[0][0],C[0][1],C[0][2],C[0][3],
                        0.00001,tx_yellow,tx_blue)
                        scale<tam,tam,tam>}

        object { roda rotate <0,90,0> translate <2.1,-1,0> scale<tam,tam,tam>}
        object { roda rotate <0,90,0> translate <-2.1,-1,0> scale<tam,tam,tam>}
        object { roda rotate <0,90,0> translate <0,+2.1,0> scale<tam,tam,tam>}
        union{
                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.0001,tx_yellow,tx_blue)
                        scale<tam,tam,tam>}
                object{
                retalho(A[0][0],A[0][1],A[0][2],A[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],
                        A[3][0],A[3][1],A[3][2],A[3][3],
                        0.0001,tx_yellow,tx_blue)
                        scale<tam,tam,tam>
                        }
                }
        union{
                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.0001,tx_yellow,tx_blue)
                        scale<tam,tam,tam>}
                object{
                retalho(A[0][0],A[0][1],A[0][2],A[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],
                        A[3][0],A[3][1],A[3][2],A[3][3],
                        0.0001,tx_yellow,tx_blue)
                        scale<tam,tam,tam>
                        }
                translate <-4*tam,0,0>

                }

        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.0001,tx_yellow,tx_blue)
                        scale<tam,tam,tam>}
}
#end

union{

        sofa(2)

}

#include "camlight.inc"
#declare centro_cena = < 0.00, 0.00, 1.00 >;
#declare raio_cena = 15.0;
#declare dir_camera = < 2, 7, 4>;
#declare dist_camera = 50.0;
#declare intens_luz = 1.00;
camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)