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

#include "colors.inc"

background{ color rgb < 1, 1, 1 > }

#declare cor_metalico = <0.4, 0.31, 0.25>;
#declare cor_cristal = <0.98, 0.98, 0.98, 0.9>;

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

#declare tx_metalico =
   texture {
     pigment { rgb cor_metalico }
     finish {
       ambient 0.05 diffuse 0.05
       reflection cor_metalico
       specular 0.20 roughness 0.05
     }
   }

#declare tx_cristal =
   texture {

     finish {
       ambient 0 diffuse 0 reflection 0.5
       refraction 0.85 ior 1.5 phong 0.3 phong_size 60
       specular 1 roughness 0.001
     }
     pigment { color rgbf cor_cristal filter 1}
   }

#declare eixos =

union {

        cylinder {
         <-50, 0, 0>, <50, 0, 0>, 0.1
         pigment { color rgb <1, 0, 0> }
        }

        cylinder {
         <0, -50, 0>, <0, 50, 0>, 0.1
         pigment { color rgb <0, 1, 0> }
        }

        cylinder {
         <0, 0, -50>, <0, 0, 50>, 0.1
         pigment { color rgb <0, 0, 1> }
        }
}

#declare trilhos =

union {
        torus {
         5.5, 0.05
         texture {tx_metalico}

 }
        torus {
         4.75, 0.05
         texture {tx_metalico}

        }
}

plane {
  y, 0
  pigment { color rgb <0, 0.5, 0.32> }
}

#declare roda_dir =
cylinder {
   < 5.45, 0.35, 0>
   < 5.55, 0.35, 0>
   0.3
   texture {tx_metalico}
}

#declare roda_esq =
cylinder {
   < 4.7, 0.35, 0>
   < 4.8, 0.35, 0>
   0.3
   texture {tx_metalico}
}

#declare rodas4 =
union{
    #declare i=0;
    #while (i<2)
        union {
                object {roda_dir}
                object {roda_esq}
                rotate y*7*i
              }
       #declare i = i + 1;
    #end
}

#declare rodas_vagao =
union{
    #declare i = 0;
    #while (i < 2)
       object { rodas4 rotate y*20*i }
       #declare i = i + 1;
    #end
}

#declare janela =
box {
   <4.24, 1.1, 1.3>
   <6.1,1.9,1.7>
   texture {tx_cristal }

}

#declare janelas =
union{
    #declare i = 0;
    #while (i > -3)
       object { janela translate <0,0,i> }
       #declare i = i - 0.7;
    #end
}

#declare carroceria =
box {
   <4.25, 0.7, -2>
   <6,2.3,2>
   texture { amarelo}

}

#declare carro =
difference {
        object {carroceria}
        object {janelas}
        rotate y*14
}

#declare vagao =

union {

   object {rodas_vagao}
   object {carro}
}

#declare trem =
union{
    #declare i = 0;
    #while (i < 4)
       object { vagao rotate y*52.5*i }
       #declare i = i + 1;
    #end
}

#declare estacao =
union {

  text {
    ttf "timrom.ttf" "Estacao Sujera" 1, 0
    pigment { Red }
    rotate 90*y
    translate <-6.9,3,4>
  }

difference {
  object {
   box {
     <-7, 0, -6>
     <-10, 4,6>
     pigment { Blue}
   }
  }
  object {
    box {
      <-6.9, 0, -6>
      <-8.5, 2,6>
      pigment { Blue}
    }
  }
}

}

#declare animacao =
union {

#declare tt = clock;

#declare h = 0.2;

#declare circulo = 360;

#declare a = circulo/(2*h*(1-h));

#declare velocidade = 2*a*h;

#declare posicao_desaceleracao = -a*h*h;

     #if (tt < 0.2)
       #declare posicao = a*tt*tt;
       object {trem rotate posicao*y}
     #else
       #if (tt <0.8)
         #declare posicao = posicao_desaceleracao + velocidade*tt;
         object {trem rotate posicao*y}
       #else
         #declare posicao = circulo - a*(1-tt)*(1-tt);
         object {trem rotate posicao*y}
       #end
     #end

}

union {

     object {trilhos}

     object {estacao}

     object {animacao}
}

#include "camlight.inc"
camlight(<0,0,0>,<10,5,15>,1.00,y,1.0)