// Ivan Francisco Coutinho Costa
// Last edited on 2003-05-27 20:53:38 by stolfi
// RA 001833
// MC930 - TP 3 - Macaco Mecanico
// Data 18/03/2003


#include "colors.inc"
#include "textures.inc"
#include "metals.inc"

background { color Black }

camera {
    location 1.4*<-25, 5, -22>
    right 0.60*x up 0.60*y
    look_at <0,0.5,-6>
 }

//light_source { <10, 20, -10> color White }
light_source { 10*<-15, 8, 12> color 1.4*Pink }
light_source { 10*<-10, 10, -20> color 1.4*White  }


plane {
  y, -10.0
  texture { White_Wood } 
}


#declare tronco =
     union {
        sphere { <0, 10, 0> 2.0 }
        sphere { <0, 0, 0> 2.0 }
        cylinder { <0,0,0>, <0,10,0>,2 }
        pigment { Brown  }
    }
                
#declare orelha = 
     difference {
          sphere { <0, 0, 0>, 1.5 }
          sphere { <0, 0, .8>, 2.0 }
          pigment {Flesh}
     }
                     

#declare rabo=
    union {
       cylinder {<0,0,0>, <10,0,0>, 0.4 pigment {Brown} }   // cilindro deitado no eixo x
    }

#declare olho=
   sphere { <0,0,0>, .3 pigment { White } }

#declare braco =
     union { 
        sphere { <0,0,0>, 1.0 }          
        cylinder { <0,0,0>, <0,-3, 0>, 1.0}
        cylinder { <0,-3,0>, < 2, -7, 0>, 0.8}
        sphere { <0,-3,0>, 1.0 }    
        // a mao
        union {
           sphere { <2,-7,0>, 0.8 pigment {Flesh } }
        }
        
        pigment {Brown}
     }
   

#declare beico=
     difference {
           sphere { <0,0,0>, 1.1 }
           box { <-1.1, 0, -1.1>, <1.1, 1.1, 1.1> }
           pigment {Flesh} 
     }
          
#declare canela=
    union {
       cylinder { <0,0,0>, <0,-5,0>, 1.0 }  // canela

       union {                              // o pe
         sphere { <0,-5,0> 1 }
         cylinder {<0,-5,0>, <0,-5, -1>, 1.0 }
         sphere { <0,-5,-1>, 1 }
         pigment {Flesh}
       }
       pigment {Brown}	
    }


// ----------------


#if (mod (clock, 0.50) < 0.25 ) 
    #declare teta=clock*30;
#else
    #declare teta=3-((clock-0.25)*30);
#end

#if (teta > 0)
    #declare teta_canela=clock*15;
#else
    #declare teta_canela=clock*-45;
#end



#declare perna_esquerda =
    union {                               
       sphere { <0,0,0>, 1.3 }
       cylinder { <0,0,0>, <0,-4,0>, 1.3 }  // coxa
       sphere { <0,-4,0>, 1.3 }
       object { canela rotate <teta_canela, 0, 0> translate <0,-4,0>}     
       pigment { Brown }
    } 


#declare perna_direita =
    union {                               
       sphere { <0,0,0>, 1.3 }
       cylinder { <0,0,0>, <0,-4,0>, 1.3 }  // coxa
       sphere { <0,-4,0>, 1.3 }
       object { canela rotate <teta_canela, 0, 0> translate <0,-4,0>}     
       pigment { Brown }
    }

    

#declare corpo=
  union {
     object { tronco }
     object { orelha rotate <180,0,0> translate <-2.5,10,-1>}               // orelha direita    
     object { orelha rotate <180,0,0> scale <-1,1,1> translate <2.5,10,-1> }  // orelha esquerda 
     object { rabo rotate <0,290,0> rotate <0,0,0> translate <0,0,0> }      // rabo unico
     object { olho translate <-1,10,-1.8> }                     // olho direito
     object { olho translate <1,10,-1.8> } 	                // olho esquerdo
     object { beico rotate <-10, 0,0 > translate <0, 8, -2> }  // beico inferior
     object { beico rotate <180,0,0> translate <0, 8, -2> }    // beico superior 	
  }
     

#declare macaco =
  union {
     object { corpo }
     object { perna_esquerda rotate <teta, 0,0> translate <1.5,0,0> }   // perna  
     object { perna_direita rotate <-teta, 0,0> translate <1.5,0,0> scale <-1,1,1> }  // perna  
     object { braco rotate <0,100,0> rotate <0,0,-25> translate <-2, 6, 0>}                // braco direito
     object { braco rotate <0,100,0> rotate <0,0,-25> scale <-1,1,1> translate <2,6,0> }  // braco esquerdo                 
  }
          
          
// a cena 

object { macaco translate <0,0,clock*-8> }