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

#include "textures.inc"
#include"math.inc"
#include "retalho.inc"

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_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_verde =
  texture{
    pigment{ color rgb < 0, 0.80, 0.10 > }
    finish{ diffuse 0.9 ambient 0.1 }
  }

#declare tx_creme =
  texture{
    pigment{ color rgb < 0.9, 1, 0.90 > }
    finish{ diffuse 0.9 ambient 0.1 }
  }

#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 tx_branco=
  texture{
    pigment{ color rgb <1,1,1>}
    finish {diffuse 0.9 ambient 0.1}
  }

#declare raio = 2.000;

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

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

#declare painel=
  box{ <-3,-5,+0.5> <+3,+5,0> }

#declare roda=
  cylinder {<-1.5,0,0> <1.5,0,0>, 0.5 texture {Metal}}

#declare roda_dentro=
  cylinder {<-1.5,0,0> <1.5,0,0>, 0.25 texture {Chrome_Metal}}

#declare banco=
  box{ <0,0,0>,<0.5,2,0.2>}

#declare escapamento=
  cylinder {<0,0,0> <0,0.75,0> 0.05 texture {Metal} }

#macro meiosofa(a)
        union{
                #local A = array[4][4];

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

#end

#macro retalhoreto(b)
        union{
                #local A = array[4][4];
                #local A[0][0] = <0,0,-0.5>;
                #local A[0][1] = <0,1,-0.5>;
                #local A[0][2] = <0,2,-0.5>;
                #local A[0][3] = <0,3,-0.5>;
                #local A[1][0] = <1,0,0>;
                #local A[1][1] = <1,1,0>;
                #local A[1][2] = <1,2,0>;
                #local A[1][3] = <1,3,0>;
                #local A[2][0] = <2,0,0>;
                #local A[2][1] = <2,1,0>;
                #local A[2][2] = <2,2,0>;
                #local A[2][3] = <2,3,0>;
                #local A[3][0] = <3,0,-0.5>;
                #local A[3][1] = <3,1,-0.5>;
                #local A[3][2] = <3,2,-0.5>;
                #local A[3][3] = <3,3,-0.5>;
                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, texture {tx_creme}, texture {tx_creme})}

        }

#end

#declare peca1=
        cylinder { <0,0,1> <0,1,0> 0.08 texture {Metal} }

#declare peca2=
  cylinder {<-1.5,0,0> <1.5,0,0>, 0.08 texture {Metal}}

#include "eixos.inc"

union{
  object{ eixos(3.00)}

  object{ chao  translate < 0,0,-5 > texture{ tx_xadrez }}
  object{ meiosofa(1) scale<0.5,0.5,0.5>}
  object{ meiosofa(1) scale<0.5,0.5,0.5> translate <0,-6,0> rotate <180,0,0>}
  object{ meiosofa(1) scale<0.5,0.5,-0.5> }
  object{ meiosofa(1) scale<0.5,0.5,-0.5> translate <0,-6,0> rotate <180,0,0>}
  object{ retalhoreto(1) scale<0.5,1,1> translate<0,1.5,0.5> texture {tx_branco}}
  object{ retalhoreto(1) scale<0.5,1,-1> translate<0,1.5,-0.5>}
  object{ roda scale <0.5,1,1> translate <0.7,1.5,-0.8>}
  object{ roda scale <0.5,1,1> translate <0.7,4.5,-0.8>}
  object{ peca1 translate <0.7,0,0>}
  object{ peca2 scale <0.5,1,1> translate <0.7,0,1> }
  object{ roda_dentro scale <0.5,1,1> translate <0.7,1.5,-0.8>}
  object{ roda_dentro scale <0.5,1,1> translate <0.7,4.5,-0.8>}

  object{ escapamento rotate <35,0,0> translate <1.25,5.5,-0.1> }
  object{ banco translate <0.75,2.75,0.25> texture {Chrome_Metal}}
  object{ banco rotate <90,0,0> scale <1,1,0.5> translate <0.75,4.75,0.25> texture {Chrome_Metal}}

}

#include "camlight.inc"
#declare centro_cena = < 0.00, 0.00, 1.00 >;
#declare raio_cena = 8.0;
#declare dir_camera = < 14.00, 7.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)