// Last edited on 2003-06-28 14:11:56 by stolfi
// Repermeador Oscilatório Multifuncional
// 22/05/2003 Thiago Barroso Fonte Boa

#include "colors.inc"
#include "stones.inc"

background { Gray90 }

#declare ctr = <  0.5, 1, 0 >;
#declare cam = <  0, 1, -4 >;
camera {
  location ctr + 1.2*cam
  right 1.2*x 
  up 0.9*y
  sky y
  look_at ctr 
} 

light_source { ctr + 100*vrotate(cam +  3.0*y, -40*y) color 1.2*White } 
light_source { ctr + 100*vrotate(cam +  1.0*y, +55*y) color 0.5*White } 
light_source { ctr + 100*vrotate(cam +  0.1*y, +15*y) color 0.8*White } 

#if(clock<0.5)
  #declare rot=0;
  #declare transcomb = -clock*2.6;
  #declare transpeca = 0;
  #declare reb=0;
#end
#if(clock>=0.5 & clock<0.8)
  #declare rot=-20+50*abs(cos(radians(2*(clock-0.5)*720)));
  #declare transcomb = -1.3;
  #declare transpeca = 0.9 + (9*(clock-1)/5);
  #declare reb=0;
#end
#if(clock>=0.8)
  #declare rot=-20+50*abs(cos(radians(2*(clock-0.5)*720)));
  #declare transcomb = -1.3;
  #declare transpeca = 0.9 + (9*(clock-1)/5);
  #declare reb=0.5+2.5*(clock-1);
#end


#declare combustor=
  union{
    box{<-0.5,-0.2,-0.5>,<0.5,0.2,0.5> pigment{color rgb<0.4,0.3,0.8>}}
    cone{<0,0,0>,0.2,<0,0.7,0>,0.45 open pigment{color rgb<0.4,0.6,0.1>}}
    translate<-0.9,1.5,0>
  }

#declare bloco=
  difference{
    union{
      cylinder{<0,-0.4,0>,<0,0.2,0>,0.9 pigment{color rgb<0.4,0.2,0.8>}}
      cylinder{<0.8,-0.2,0>,<1.5,-0.2,0>,0.1 pigment{color rgb<0.3,0.6,0.6>}}
    }
    
    box{<-0.5,-0.2,-0.5>,<0.5,0.3,0.5> pigment{color rgb<0.6,0.7,0.9>}}

    translate<-0.9,0.2,0>
  }

#declare mancal=
difference{
  union{
    box{<1.2,-0.4,-0.6>,<2.4,0.3,0.6> pigment{color rgb<0.6,0.7,0.4>}}
    box{<1.2,-0.8,-0.6>,<1.6,-0.3,-0.2> pigment{color rgb<0.6,0.7,0.4>}}
    box{<1.2,-0.8,-0.6>,<1.6,-0.3,-0.2> pigment{color rgb<0.6,0.7,0.4>} scale<1,1,-1>}
    box{<2,-0.8,-0.6>,<2.4,-0.3,-0.2> pigment{color rgb<0.6,0.7,0.4>}}
    box{<2,-0.8,-0.6>,<2.4,-0.3,-0.2> pigment{color rgb<0.6,0.7,0.4>} scale<1,1,-1>}
  }

  cylinder{<1.0,-0.2,0>,<1.3,-0.2,0>,0.1 pigment{color rgb<0.3,0.6,0.6>}}

  translate<0,0.2,0>
}

cylinder{<1.5,1.2,-0.3>,<1.5,0.3,-0.3>,0.1 pigment{color rgb<1,0.2,0.1>} translate<0,-reb,0>}
object{mancal}
object{combustor translate<transpeca,transcomb,0> rotate<rot,0,0>} 
object{bloco translate<transpeca,0,0> rotate<rot,0,0>}