// Robô dançante - por Gilberto Sgarbi Filho - RA 001754
// Last edited on 2003-10-07 19:24:16 by stolfi
// ======================================================================
// CÂMERA 

camera {
  location  < 20, 10, 5 >  	// Posição do observador.
  right     -0.60*x              // Largura RELATIVA da imagem.
  up        0.80*z              // Altura RELATIVA da imagem.      
  sky       y                   // Qual direção é "para cima"?
  look_at   < 0, 0, 0 >  	// 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 cor da 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 cor da luz.
} 

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

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

#declare raio = 2.000;

#declare tinta_A =		// Azul
  texture {
    pigment { color rgb < 0.10, 0.40, 1.00 > }
    finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
  }

#declare tinta_B = 		// 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 tinta_C = 		// Verde
  texture {
    pigment { color rgb < 0.10, 1.00, 0.00 > }
    finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
  }

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

      
#declare rosto = 
  sphere {
    < 0, 4, 0 >, 2
    texture { tinta_C }
  }

#declare olho = 
  cylinder {
    < -2, 5, 0.3>,
    < 2, 5, 1.2 >,
    0.3
    texture { tinta_B }
  }
  
#declare chapeu = 
  cone {
    <0, 8, 0>, 0,
    <0, 5.8, 0>, 1
    texture { tinta_A }
  }
  
#declare tronco = 
  box {
    < 2, -2, -4 >,
    < -2, 2, 4 >
    texture { tinta_B }
  }
  
#declare perna = 
  cylinder {
    < 0, -2, 2>,
    < 0, -8, 2 >,
    1
    texture { tinta_B }
  }

  
// Aqui está a cena, finalmente:

union {
  difference { 
    object { rosto }
    object { olho }			// Olho esquerdo
    object { olho rotate 180*y }	// Olho direito
  }
  object { olho rotate 120*x
  		rotate -30*y
  		translate <6,4,1>
	    texture { vermelho } }	// Braço esquerdo
  object { olho rotate -120*x
  		rotate -10*y
  		translate <3.5,3,1>
	    texture { vermelho } }	// Braço direito
  object { chapeu }
  object { tronco }
  object { perna }			// Perna esquerda
  object { perna rotate 180*y}		// Perna direita
  object { chapeu rotate 180*z
  		  translate <0,-2.5,-2> }
  object { chapeu rotate 180*z
  		  translate <0,-2.5,2> }
}