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

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

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

#declare tx_vermelho =
  texture{
    pigment{ color rgb <  1.00, 0.0, 0.0 > }
    finish{ diffuse 0.9 ambient 0.1 }
  }

#declare tx_met =
  texture {
    pigment { colour red 0.500 green 0.500 blue 0.500 filter 0.900}
    finish { metallic }
  }

#declare tx_fosca2 =
  texture{
    pigment{ color rgb < 1.00,0.00, 0.00 > }
    finish{ diffuse 0.9 ambient 0.1 }
  }

#declare tx_fosca3 =
  texture{
    pigment{ color rgb < 0.00, 1.00, 0.00 > }
    finish{ diffuse 0.9 ambient 0.1 }
  }

#declare tx_fosca4 =
  texture{
    pigment{ color rgb <  1.00, 1.0, 0.0 > }
    finish{ diffuse 0.9 ambient 0.1 }
  }

 #declare roda =
     union{
        torus {0.5, 0.1 texture{tx_fosca4}}
        cylinder {<0, 0.55, 0>,<0, -0.55, 0>, 0.05 texture{tx_met} rotate <90,0,0>}
        cylinder {<0, 0.55, 0>,<0, -0.55, 0>, 0.05 texture{tx_met} rotate <0,0,90>}
        cylinder {<0,0,0>,<0,0.7,0>,0.1 texture {tx_fosca3}}

  }

#declare lateral =
  union{
    box{<2,-0.5,-1>,<-1,0,1>}

}

#macro meio_sofa ()

union{
  object{lateral}
  object {roda translate<-0.2,-1,-1>}
  object {roda translate<1.2,-1,-1>}

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

  #local A[1][0] = <2.5,0,-0.25>;
  #local A[1][1] = <3,1,-0.25>;
  #local A[1][2] = <3,2,-0.25>;
  #local A[1][3] = <2.5,3,-0.25>;

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

  #local A[3][0] = <-0.1,0,-0.2>;
  #local A[3][1] = <-0.1,1,-0.2>;
  #local A[3][2] = <-0.1,2,-0.2>;
  #local A[3][3] = <-0.1,3,-0.2>;
  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.0000000000001, tx_fosca, tx_fosca2) }

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

  #local C[1][0] = <0.6,0,-0.3>;
  #local C[1][1] = <0.6,1,-0.3>;
  #local C[1][2] = <0.6,2,-0.3>;
  #local C[1][3] = <0.6,3,-0.3>;

  #local C[2][0] = <1.3,0,-0.4>;
  #local C[2][1] = <1.3,1,-0.4>;
  #local C[2][2] = <1.3,2,-0.4>;
  #local C[2][3] = <1.3,3,-0.4>;

  #local C[3][0] = A[0][0];
  #local C[3][1] = A[0][1];
  #local C[3][2] = A[0][2];
  #local C[3][3] = A[0][3];
  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.0000000000001, tx_fosca, tx_fosca2) }

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

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

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

  #local B[3][0] = <-0.5,0,2>;
  #local B[3][1] = <-0.5,1,2>;
  #local B[3][2] = <-0.5,2,2>;
  #local B[3][3] = <-0.5,3,2>;
  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.000000000000001, tx_fosca, tx_fosca2) }

  #local D = array[4][4];
  #local D[0][0] = B[3][0];
  #local D[0][1] = B[3][1];
  #local D[0][2] = B[3][2];
  #local D[0][3] = B[3][3];

  #local D[1][0] = <-0.37,0,1.3>;
  #local D[1][1] = <-0.37,1,1.3>;
  #local D[1][2] = <-0.37,2,1.3>;
  #local D[1][3] = <-0.37,3,1.3>;

  #local D[2][0] = <-0.24,0,0.6>;
  #local D[2][1] = <-0.24,1,0.6>;
  #local D[2][2] = <-0.24,2,0.6>;
  #local D[2][3] = <-0.24,3,0.6>;

  #local D[3][0] = B[0][0];
  #local D[3][1] = B[0][1];
  #local D[3][2] = B[0][2];
  #local D[3][3] = B[0][3];
  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],
                  D[3][0],D[3][1],D[3][2],D[3][3], 0.000000000001, tx_fosca, tx_fosca2)}

 }
  #end

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

union{
  object{ eixos(3.0) }
  object{meio_sofa()}
  object{meio_sofa() scale<1,-1,1> translate<0, 6,0>}

}

#include "camlight.inc"
#declare centro_cena = < 0.00, 0.00, 1.00 >;
#declare raio_cena = 8.0;
#declare dir_camera = < 5.01, 2.01, -2.01 >;
#declare dist_camera = 16.0;
#declare intens_luz = 1.00;
camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)