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

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

#declare amarelo = <1,1,0.1>;
#declare azul = <0.2,0.8,1>;
#declare verde = <0.2,1,0.1>;
#declare vermelho = <1,0.2,0.1>;
#declare preto = <0.1,0.1,0.1>;
#declare marrom = <0.2,0.2,0.2>;
#declare branco = <1,1,1>;

#declare m=360;
#declare a=m/(2*0.3*0.7);
#declare b=-a*0.3*0.3;
#declare c=2*a*0.3;

#declare vagao =
  union {

  #declare i = 0;
  #while(i<8)
  #declare temp =
    union {
      cylinder {
        <0,3,0>,
        <0,3,7>,
        0.7
        pigment {color preto filter 1}
      }
      cylinder {
        <0,3.5,-0.3>,
        <0,3.5,7.3>,
        0.2
        pigment {color branco filter 0.5}
      }
    }
  object { temp  translate -1*y+1.2*i*x+2*z }
  #declare i=i+1;
  #end

    box {
      <0,3,3>,<10,7,7>
      pigment {color azul filter 0.8}
      translate -1*x
    }

    #declare i = 0;
    #declare gerador = seed(12345);
    #while(i<10)
       #declare treco =
         #if(i>4)
           cylinder { <1,3,0.1>, <1,3,0.2>, 1 pigment {color amarelo filter 0.5} }
         #else
           cylinder { <1,3,0.1>, <1,3,0.2>, 0.6 pigment {color amarelo filter 0.5} }
         #end
      object { treco translate <7*rand(gerador),4*rand(gerador),7.1>}
      #declare i=i+1;
    #end
  }

#declare trem =
  union {

  #declare i = 0;
  #while(i<8)
  #declare temp =
    cylinder {
      <0,0,0>,
      <0,0,10>,
      2
      pigment {color preto filter 1}
    }
  object { temp  translate -1*y+2.8*i*x}
  #declare i=i+1;
  #end

    box {
      <0,0,0>,<20,10,10>
      pigment {color vermelho filter 0.8}
    }

    cylinder {
      <3,10.1,5>,
      <3,18,5>,
      2
      pigment {color vermelho filter 1}
    }

    #declare i = 0;
    #declare gerador = seed(12345);
    #while(i<5)
      #declare treco =
        box { <0,0,0>,<+3,+1.7,0.3> pigment {color amarelo filter 0.5}}
      object { treco translate <16*rand(gerador),8*rand(gerador),10.1>}
      #declare i=i+1;
    #end
  }

#declare trilhoext=
  cylinder {
    < 0, 0, 0 >,< 0, 0.5, 0 >,53
    pigment {color marrom}
}

#declare trilhoextaux=
  cylinder {
    < 0, -0.1, 0 >,< 0, 0.6, 0 >,52
    pigment {color marrom}
}

#declare trilhoint=
  cylinder {
    < 0, 0.0, 0 >,< 0, 0.5, 0 >,49
    pigment {color marrom}
}

#declare trilhointaux=
  cylinder {
    < 0, -0.1, 0 >, < 0, 0.6, 0 >, 48
    pigment {color marrom}
}

#declare trem_total =
  union {
 #declare cont = 0;
 #while(cont<8)
   #declare r = 25*cont;
   #if(cont=7)
     object{ trem
             translate<0,0,-55>
             rotate r*y
           }
   #else
     object{ vagao
             translate<0,-4,-55>
             rotate r*y
           }
   #end
   #declare cont = cont + 1;
 #end
 }

object {trem_total
 #if (clock < 0.3)
   rotate y*clock*a*clock
 #else
   #if (clock < 0.7)
     rotate y*(clock*c+b)
   #else
     rotate y*(m-a*(1-clock)*(1-clock))
   #end
 #end
 translate 3*y
 }

union{
  difference{
    object {trilhoext}
    object {trilhoextaux}
  }
  difference{
    object {trilhoint}
    object {trilhointaux}
  }
}

#include "camlight.inc"
camlight(<0,0,0>,<120,120,120>,1.00,y,1.0)