// Exemplo de arquivo de descricao de cena para POV-ray
// Last edited on 2003-09-04 15:25:26 by stolfi

#include "colors.inc"

// ======================================================================
// CÂMERA 

camera {
  location  <5, -5, 60.00 >  // Posição do observador.
  right     -0.75*x                // Largura RELATIVA da imagem.
  up        1.00*y                 // Altura RELATIVA da imagem.      
 // sky       z                      // Qual direção é "para cima"?
  look_at   <  5.00, 0.00, 0.00 >  // Para onde a câmera está apontando.
  rotate 40*y
} 
// Nota: os parâmetros "right" e "up" devem ter a mesma proporção
// que os parâmetros ${WIDTH} e ${HEIGHT} no Makefile.

// ======================================================================
// FONTES DE LUZ

light_source {
  10 * < +50.0, +30.0, +50.0 >              // Posição da lâmpada.
  color rgb 1.2 * < 1.00, 1.00, 1.00 >   // Intensidade e corda luz.
} 

light_source {
  10 * < -30.0, 30.0, -30.0 >             // Posição da lâmpada.
  color rgb 0.8 * < 1.00, 1.00, 1.00 >   // Intensidade e corda luz.
} 

// ======================================================================
// DESCRIÇÃO DA CENA 

global_settings {
  assumed_gamma 1.0
}

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

sky_sphere {
  pigment {
    gradient y
    color_map {
      [0.0 rgb <0.6,0.7,1.0>]
      [0.7 rgb <0.0,0.1,0.8>]
    }
  }
}

#declare amarelo = 
  texture {
    pigment { color rgb < 1.00, 1.00, 0.00 > }
    finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
  }  
  
#declare azulclaro = 
  texture {
    pigment { color rgb < 0.00, 1.00, 1.00 > }
    finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
  }
  

#declare dedos1 = 25;
#declare dedos2 = 0; 

#declare mao1a= -30;
#declare mao1b= 30;
#declare mao2 = 0;

#declare ant1a = -40; 
#declare ant1b = 35;
#declare ant2 = 0; 

#declare braco1=40;
#declare braco2=90;

#declare movdedo1= dedos1/0.6 * (clock);
#declare movdedo2= dedos1;

#declare movmao1a= mao1a/0.6 * (clock);
#declare movmao1b= mao1b/0.6 * (clock); 
#declare movmao2a= mao1a;
#declare movmao2b= mao1b;

#declare movant1a= ant1a/0.6 * (clock);
#declare movant1b= ant1b/0.6 * (clock);
#declare movant2a= ant1a;
#declare movant2b= ant1b;

#declare movbraco1= braco1/0.6 * (clock);
#declare movbraco2= braco1 + ((braco2-braco1)/(0.4))*(clock-0.6);


#declare dedos =
union{
cylinder{<0,-1,0>,<2.5,-1,0>,0.25
pigment { Blue }
}  
cylinder{<0,-0.5,0>,<2.5,-0.5,0>,0.25
pigment { Red }
}  
cylinder{<0,0,0>,<2.5,0,0>,0.25
pigment { Magenta }
}  
cylinder{<0,0.5,0>,<2.5,0.5,0>,0.25
pigment { Yellow }
}  
cylinder{<0,1,0>,<2.5,1,0>,0.25
pigment { Green }
}  
}

    
#declare mao1=
union{
  object {dedos       
      #if(clock<0.6)  
        rotate movdedo1*y
      #else
        rotate movdedo2*y
      #end       
        translate <3,0,0>
  }
  box{
    <0,1.25,0.5>,
    <3,-1.25,-0.5>
    pigment { Magenta }
  }
}

#declare fugitivo=
cylinder{<15,-10,-6>,<15,-4,-6>,2
         pigment {White}
   
}

#declare fugitivo2=
cylinder{<3,3,-2.6>,<3,-3,-2.6>,2
         pigment {White}
   
}

#declare mao_obj=
union{
  object {mao1}
  object {fugitivo2}
}


#declare antebraco1=
#if(clock<0.6)
union{
  object{mao1
         rotate movmao1a*y
         rotate movmao1b*x     
         translate <8,0,0>
  }
  cylinder{<0,0,0>,<8,0,0>,1.25
           pigment {Blue}
  }
}
#else
union{
  object{mao_obj       
         rotate movmao2a*y
         rotate movmao2b*x
         translate <8,0,0>
  }
  cylinder{<0,0,0>,<8,0,0>,1.25
           pigment {Blue}
  }
}
#end

#declare braco1=
union{
  object{antebraco1
       #if(clock<0.6)
          rotate movant1a*z
          rotate movant1b*y
       #else
          rotate movant2a*z
          rotate movant2b*y
       #end
         translate <0.5,-8,0>
  }
  cylinder{<0,-8.5,0>,<0,0,0>,1.5
           pigment {Green}
  }
}

#declare mao2=
union{
  object {dedos       
      #if(clock<0.6)  
        rotate -movdedo1*y
      #else
        rotate -movdedo2*y
      #end       
        translate <3,0,0>
  }
  box{
    <0,1.25,0.5>,
    <3,-1.25,-0.5>
    pigment { Magenta }
  }
}

#declare antebraco2=
union{
  object{mao2
      #if(clock<0.6)
         rotate -movmao1a*y
         rotate -movmao1b*x
      #else
         rotate -movmao2a*y
         rotate -movmao2b*x
      #end
         translate <8,0,0>
  }
  cylinder{<0,0,0>,<8,0,0>,1.25
           pigment {Blue}
  }
}

#declare braco2=
union{
  object{antebraco2
       #if(clock<0.6)
          rotate movant1a*z
          rotate -movant1b*y
       #else
          rotate movant2a*z
          rotate -movant2b*y
       #end
         translate <0.5,-8,0>
  }
  cylinder{<0,-8.5,0>,<0,0,0>,1.5
           pigment {Green}
  }
}



#declare corpo=
union{
 box{<-5,-10,-0.8>,<5,2,-11.2>
     pigment {Black}   
 }
 cylinder{<0,2.01,-6>,<0,4,-6>,1
     pigment {Yellow}
 }
 sphere{<0,8,-6>,4
     pigment {Blue}
 }

}



#declare conjunto=
union{
  object{antebraco1
       #if(clock<0.6)
          rotate movant1a*z
          rotate movant1b*y
       #else
          rotate movant2a*z
          rotate movant2b*y
       #end
         translate <0.5,-8,0>
  }
  cylinder{<0,-8.5,0>,<0,0,0>,1.5
           pigment {Green}
  }
  object{fugitivo}
}



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

plane {
  y, -20
  pigment { color rgb <0.7,0.5,0.3> }
}


union{
object {corpo} 
object{braco1  
  #if(clock<0.6)
    rotate movbraco1*z
  #else
    rotate movbraco2*z
   #end
}
object{braco2
 #if(clock<0.6)
    rotate movbraco1*z
  #else
    rotate movbraco2*z
   #end
 //rotate 70*z*clock
 translate <0,0,-12>

}
#if(clock<0.6)
object {fugitivo}
#end
}