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

#include "colors.inc"

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

#declare raio = 2.000;
#declare amarelo = <1,.8,.1>;
#declare verde = <0,1,0>;
#declare vermelho = <1,0,0>;

#declare tverde =
    texture {
 finish {
  ambient 0.1 diffuse .1 reflection .25
  specular 1 roughness .001
  }
 pigment { color verde filter 1 }
}

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

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

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

#declare tvermelho =
    texture {
 finish {
  ambient 0.1 diffuse .1 reflection .25
  specular 1 roughness .001
  }
 pigment { color vermelho filter 1 }
 }

#declare tx_espelho =
texture {
 pigment { rgb amarelo }
 finish {
 ambient .05 diffuse .05
 reflection amarelo *.50
 specular .20 roughness .05
}
}

#declare janela_redonda=
  cylinder {
 <1.30,1.05,0.7>
 <1.30,-0.05,0.7>
 0.17
 texture {tinta_C}

}

#declare janela_quadrada=
   box {
 <1.47,1.05,0.87>
 <1.13,-0.05,0.53>
 texture {tinta_C}
}

#declare roda =
cylinder {
 <1.30,1.05,0.17>
 <1.30,-0.05,0.17>
 0.17
 pigment {rgb <0,0,0>}

}

#declare  vagao =
 union {
 #declare r=0;
 #declare gerador = seed ( 1234567);
 #while (r<4)
 union {
 box {<0,0,0> <1.5,1,1> texture {tinta_A}}
 box {<0,0.45,0> <-0.4,0.55,0.1> texture {tinta_A}}
  #if (rand (gerador )>=.5)
   object { janela_redonda translate <-0.35*r,0,0>}
    #else
   object { janela_quadrada translate <-0.35*r,0,0>}
 #end
 object { roda  translate <-0.35*r,0,0>}
 }
 #declare r = r+1;
 #end
 }

#declare primeiro_vagao =
 union {
 #declare r=0;
 #declare gerador = seed ( 1234567);
 box {<0,0,0> <0.75,1,0.7> texture {tinta_A}}
 box {<0.75,0,0> <1.5,1,1.2> texture {tinta_A}}
 box {<0,0.45,0> <-0.4,0.55,0.1> texture {tinta_A}}
 #while (r<4)
 object { roda  translate <-0.35*r,0,0>}
 #declare r = r+1;
 #end
 #declare r=0;
 #declare gerador = seed ( 1234567);
 #while (r<2)
  #if (rand (gerador )>=.5)
   object { janela_redonda translate <-0.35*r,0,0>}
    #else
   object { janela_quadrada translate <-0.35*r,0,0>}
 #end
 #declare r=r+1;
 #end
 }
#declare trem =
 union {
 #declare n=0;
 #while (n<7)
 #if (n=0)
 object {primeiro_vagao  translate <-1,4.85,0> rotate -n*19*z}
 #else
 object {vagao  translate <-1,4.85,0> rotate -n*19*z}
 #end
 #declare n = n+1;
 #end
 }

#declare estacao =
box {
 <0,0,0> <1.5,1,1>
 pigment {rgb <0,0,0>}
}

#declare tempo=clock;
#if (tempo < 0.3)
    #declare mult = sin(tempo*pi/3*3)+1;
#else (tempo < 0.8)
    #declare mult = sin(tempo*pi/3*1.8)+1;
#end

union {
 lathe {
     linear_spline
            2,
            <5.0,0>,<5.1,0>
     rotate 90*x
     pigment {rgb <0,0,1>}
 }
 lathe {
     linear_spline
            2,
            <5.9,0>,<6.0,0>
     rotate 90*x
     pigment {rgb <0,0,1>}
 }
 object {estacao  translate <-1,6,0> rotate 40*z }
 object {trem rotate z*mult*400 }
}

#include "camlight.inc"
camlight(<0,0,0>,<7.00,8.00,17>,1.00,z,1.0)