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

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

camera {
  location  < 15.00, 15, 6 >  // Posição do observador.
  right     -1.00*x                // Largura RELATIVA da imagem.
  up        0.5*y                 // Altura RELATIVA da imagem.      
  sky       z                      // Qual direção é "para cima"?
  look_at   < 3, 0, 1 >  // Para onde a câmera está apontando.
} 
// 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 * < +50.0, -10.0, +10.0 >             // Posição da lâmpada.
  color rgb 0.8 * < 1.00, 1.00, 1.00 >   // Intensidade e corda luz.
} 

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

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

#declare raio = 2.000;

#declare tinta_Cinza = 
  texture {
    pigment { color < 0.5, 0.5, 0.5 > }
    finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
  }

#declare tinta_Azul = 
  texture {
    pigment { color < 0.4, 0.5, 0.9 > }
    finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
  }
  
  
#declare tinta_Vermelha = 
  texture {
    pigment { color < 0.9, 0.1, 0.1 > }
    finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
  }
  
#declare tinta_Marrom = 
  texture {
    pigment { color < 0.5, 0.1, 0.1 > }
    finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
  }

#declare c=clock;  
#declare t1=0.33;
#declare t2=0.66;
#declare t3=1;
    
#declare dedo = 
  difference {
    cylinder {
      < 0, 0, 0 >,
      < 0, 0.3, 0 >,
      0.5
      texture {tinta_Vermelha}
    }
    cylinder {
      < 0, -0.1, 0 >,
      < 0, 0.4, 0 >,
      0.3
      texture {tinta_Vermelha}
    }
    box { <0,0,0> <1,1,1> translate <-0.5,-0.1,0> }
    #if (c<t1)
      rotate y*3*c*75
    #else
      rotate y*75 
      #if (c<t2)
        
      #end  
    #end        
  }

#declare mao = 
  union {
    cylinder{ <0,0,0>, <0.5,0,0>, 0.3 texture{tinta_Vermelha} }
    object{dedo translate <0.9,-0.15,0>}
    object{dedo rotate x*180 translate <0.9,0.15,0>}
    #if (c<t1)
      rotate x*3*c*180
    #else
      rotate x*180 
      #if (c<t2)
      
      #end  
    #end  
    
  }

#declare antebraco =
  union {
    cylinder {
      < 0, 0, 0 >,
      < 3, 0, 0 >,
      0.4
      texture {tinta_Vermelha}
    }
    object{mao translate <3,0,0>}
    #if (c<t1)
      rotate y*120*3*c
    #else
      rotate y*120 
      #if (c<t2)

      #end  
    #end
    
  }  
  
#declare braco =
  union {
    cylinder {
      < 0, 0, 0 >,
      < 5, 0, 0 >,
      0.5
      texture {tinta_Vermelha}
    }
    object{antebraco translate <5,0,0>}
    #if (c<t1)
      rotate y*-45*3*c
    #else
      rotate y*-45 
      #if (c<t2)
        rotate y*20*(c-t1)*3
      #else
        rotate y*20
      #end  
    #end

  }  
  

#declare ombro = 
  union {
    cylinder {
      < 0, 0, 0 >,
      < 0, 0, -2 >,
      0.7
      texture {tinta_Vermelha}
    }
    object{braco}
    #if (c>=t2)
      rotate 55*z*3*(c-t2)
    #end
  }

#declare corpo = 
  cylinder {
    <0,0,-0.5>,
    <0,0,1>,
    1
    texture {tinta_Vermelha}
    scale <1,2,1>
    translate <0,2,0>
}
 
#declare pescoco = 
  cylinder {
    <0,0,0>,
    <0,0,2>,
    0.5
    texture {tinta_Vermelha}
    translate <0,2,1>
}

#declare cabeca = 
  cylinder {
    <0,0,0>,
    <0,0,2.5>,
    1.5
    texture {tinta_Vermelha}
    translate <0,2,3>
}

    
    
#declare copo =
  cylinder {
    <0,0,0>,
    <0,0,1>,
    0.4
    texture {tinta_Azul}
    translate<4.1,2,0>
    #if (c>=t2)
      rotate -55*y*3*(c-t2)
    #end
  } 


    
 union{     
   object{ombro}
   object{ombro scale<1,1,-1> translate<0,0,-4>}
   rotate 90 *x
 }
 object{corpo}
 object{pescoco}
 object{cabeca}
 object{copo}