// Exemplo de arquivo de descricao de cena para POV-ray
// Last edited on 2003-10-14 22:46:34 by stolfi

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


#declare ctr = < 0.00, -3.00, 0.00 >;
#declare camdir = < 15.00, 5.00, 25.00 >;

camera {
  location  ctr + 0.45*camdir  // Posição do observador.
  right     -0.60*x                 // Largura RELATIVA da imagem.
  up        0.80*y                 // Altura RELATIVA da imagem.      
  sky       y                      // Qual direção é "para cima"?
  look_at   ctr  // 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, +5.0, +10.0 >              // Posição da lâmpada.
  color rgb 0.6 * < 1.00, 1.00, 1.00 >   // Intensidade e corda luz.
} 

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

light_source {
  10 * < +50.0, +50.0, +50.0 >             // Posição da lâmpada.
  color rgb 0.3 * < 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_A = 
  texture {
    pigment { color rgb < 0.10, 0.80, 1.00 > }
    finish { diffuse 0.8 specular 0.5 roughness 0.005 ambient 0.1 }
  }

#declare tinta_B = 
  texture {
    pigment { color rgb < 1.00, 0.80, 0.10 > }
    finish { diffuse 0.8 specular 0.5 roughness 0.005 ambient 0.1 }
  }

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

#declare verde = 
  texture {
    pigment { color rgb < 0.00, 1.00, 0.00 > }
    finish { diffuse 0.8 specular 0.5 roughness 0.005 ambient 0.1 }
  }
    
#declare bola =
  sphere {
    < 0.00, 0.00, 0.00 >, 1.50 
    texture { tinta_A }
  }
  
#declare olho = 
  cylinder {
    < 0.00, 0.00, 3.00 >,
    < 0.00, 0.00, -3.00 >,
    0.40
    texture { tinta_B }
  }
  
#declare orelha = 
  cylinder {
    < -2.00, 0.00, 0.00 >,
    < +2.00, 0.00, 0.00 >,
    1.00
    texture { tinta_B }
    scale <-0.85,-0.90,1>
  }

#declare boca =
  box 
  {
    <-0.30, -0.60, 3.00>,
    <+0.30, -0.80, -3.00>
    texture { tinta_B }
  }

//box
//{
  //<0.00, 0.00, +2.00>,
  //<+2.00, +2.75, +2.50>
  //texture { tinta_B }
//}

 
// corpo
cone
{
  <+0.00, -1.50, 0.00>,
  2.00,
  <0.00, -5.50, 0.00>
  1.25
  texture { vermelho }
}

#declare perna =
cylinder
{
  <0.00, -5.50, 0.00>,
  <0.00, -7.50, 0.00>,
  0.3
  texture { verde }
}

#declare pe =
box
{
  <-0.65, -7.80, -1.00>,
  <+0.65, -7.50, +1.00>
  texture { tinta_B }
}


// Aqui está a cena, finalmente:


#declare cabeca =
difference { 
 union {
   object { bola } 
   object { orelha }
 }
  object { olho  translate <-0.50,0.30, 0.00 >}
  object { olho  translate <0.50,0.30, 0.00 >}
  object { boca }
}

#declare ombro=
sphere{
 <0.00, -3.00, 0.00>,
 1.50
 texture { tinta_A }
}

#declare meio_braco=
cylinder
{
  <0.00, -1.50, 0.00>,
  <0.00, -5.50, 0.00>,
  0.5
  texture { verde }
}

#declare mao =
sphere{
 <0.00, -4.80, 0.00>,
 0.50
 texture { tinta_A }
}

#declare braco =
union{
 intersection {
   object {ombro}
   object {meio_braco}
 }
 object {mao}
 }

object {braco translate <2.00, 0.00, 0.00>
rotate 10*x}
object {braco translate <-2.00, 0.00, 0.00>
rotate -10*x}

 
object {cabeca}
object {perna translate <-0.80,0.00,0.00>}
object {pe translate <-0.80,0.00,0.00>}

object {perna translate <0.80,0.00,0.00>}
object {pe translate <0.80,0.00,0.00>}