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

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

#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_fosca_b =
  texture{
    pigment{ color rgb < 0.50, 0.50, 0.50 > }
    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 raio = 2.000;

#declare bolinha =
  sphere{ < 0,0,0 >, 0.60 }

#declare bolota =
  sphere{ < 0,0,0 >, 1.50 }

#declare bola =
  sphere{
    < 0.00, 0.00, 0.00 >, raio
    texture{ tx_plastico }
  }

#declare pino =
  cylinder{
    < -2.00, +2.00, -1.00 >,
    < +2.00, -2.00, +1.00 >,
    0.75
    texture{ tx_fosca }
  }

#declare furo =
  cylinder{
    < -1.00, -2.00, -2.00 >,
    < +1.00, +2.00, +2.00 >,
    0.75*raio
    texture{ tx_fosca }
  }

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

#declare roda =
  torus { 1, 0.25 texture{ tx_fosca_b }  }

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

#macro teste(k)

union {

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

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

#local A[2][0] = < -1,0,0>;
#local A[2][1] = < -1,0.5,0 + k>;
#local A[2][2] = < -1,1,2 + k>;
#local A[2][3] = < -1,1.5,1>;

#local A[3][0] = < -2,0,0 >;
#local A[3][1] = < -2,0.5,0>;
#local A[3][2] = < -2,1,2>;
#local A[3][3] = < -2,1.5,1>;
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.000001, tx_plastico, tx_plastico )}

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

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

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

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

}

#end

#macro encosto (k)

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

#local C[1][0] = < -2,0,0.5>;
#local C[1][1] = < -2,0.5, 0.5- k>;
#local C[1][2] = < -2,1,0.5- k>;
#local C[1][3] = < -2,1.5,0.5>;

#local C[2][0] = < -2,0,1>;
#local C[2][1] = < -2,0.5,1>;
#local C[2][2] = < -2,1,1>;
#local C[2][3] = < -2,1.5,1>;

#local C[3][0] = < -2,0, 1.3 >;
#local C[3][1] = < -2,0.5,1.5>;
#local C[3][2] = < -2,1,2.3>;
#local C[3][3] = < -2,1.5,2>;
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.000001, tx_plastico, tx_plastico )}

#end

union{

object {teste (0) scale <1,-1,1>  }
object {teste (0)  }
object {encosto (0) translate<0,-0.2,0> }
object {encosto (0) translate<0,-0.2,0> scale <1,-1,1> }
object{ roda translate < 0, 0, -1.5> }

object {teste (2) scale <1,-1,1> translate<0,4,0>}
object {teste (2) translate<0,4,0>}
object {encosto (0) translate<0,-0.2,0> translate<0,4,0>}
object {encosto (0) translate<0,-0.2,0> scale <1,-1,1> translate<0,4,0> }
object{ roda translate < 0, 0, -1.5> translate<0,4,0>}

object{ chao  translate < 0,0,-3 > texture{ tx_xadrez } }

}

#include "camlight.inc"
#declare centro_cena = < 1.00, 2.00, 0.00 >;
#declare raio_cena = 7.0;
#declare dir_camera = < 14.00, 0.00, 4.00 >;
#declare dist_camera = 16.0;
#declare intens_luz = 1.00;
camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)