// 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  <  20, 20, 3 >  // Posição do observador.
  right     -1*x                // Largura RELATIVA da imagem.
  up        0.5*y                 // Altura RELATIVA da imagem.      
  sky       z                      // Qual direção é "para cima"?
  look_at   <  0.00, 0.00, 0.00 >  // 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.
} 

#include "colors.inc"

// objetos

#declare solo =
  plane {
    <0,0,1>, -3
    pigment{White}
}

// Dedos

#declare dedo =
  box{
    <0.15,0,-0.10>,
    <-0.15,1,0.10>
}

#declare dedo1 = union{
  object{dedo pigment{Green}}
}

#declare dedo2 = union{
  object{dedo pigment{Red}}
}

#declare dedo3 = union{
  object{dedo pigment{Yellow}}
}

// Mão

#declare palma = 
  box{
    <0.15,0,-0.55>,
    <-0.15,2,0.55>
    pigment{Blue}
}

// rotação do dedo

#declare rd=clock*-40;

// Colocando os dedos na mão

#declare mao1 = union{
   object{palma}
   object{dedo1 rotate x*rd translate<0,2,0.4>}
}

#declare mao2 = union{
   object{mao1}
   object{dedo2 rotate x*rd translate<0,2,0>}
}

#declare mao = union{
   object{mao2}
   object{dedo3 rotate x*rd translate<0,2,-0.4>}
}

// Antebraço

// rotação da mão
#declare rm=clock*60;

#declare antebraco1 =
  cylinder{
    <0,0,0>,
    <0,8,0>,
    0.5
    pigment{Gray}
}

#declare antebraco = union{
  object{antebraco1}
  object{mao rotate x*rm translate<0,8,0>}
}

// Braço

// rotação do antebraço
#declare raz=30*clock;
#declare rax=10*clock;

#declare braco1 = 
  cylinder{
    <0,0,0>,
    <0,5,0>,
    0.75
    pigment{Pink}
}

#declare braco = union{
  object {braco1}
  object {antebraco rotate z*raz rotate x*rax translate<0,5,0>}
}

union{
  object{solo}
  object{braco translate<10,0,0> }
}