// Exemplo de arquivo de descricao de ANIMAÇÃO para POV-ray
// Last edited on 2009-09-24 15:40:22 by stolfi

#macro quadro(tt)
// Gera o quadro do filme (cena, luzes e câmera) 
// para o instante {tt} -- um número real entre 0 e 1.

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

camera {
  location  <  8.00, 0, 4.0 >  // Posição do observador.
  right     -10.00*x                // Largura RELATIVA da imagem.
  up        7.500*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.
} 

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

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

#declare raio = 2.000;

// Um parãmetro que varia {+1, 00, -1, 00, +1}:
#declare ctt = cos(2*pi*tt);

// Um parâmetro que varia {00, +1, 00, -1, 00}:  
#declare stt = sin(2*pi*tt);

#declare wingtt = cos(10*pi*tt);

#declare tinta_A = 
  texture {
    pigment { color rgb < 0.55 + 0.45*ctt, 0.80, 0.55 - 0.5*ctt > }
    finish { diffuse 0.5 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.5 specular 0.5 roughness 0.005 ambient 0.1 }
  }

#declare logo =
  sphere {
    < 0.00, 0.00, 0.00 >,
    2.00 
    texture { tinta_B }
  }
  
#declare bola =
  cylinder {
    < -1.00, 0.00, 0.00 >,
    <1, 0, 0>
    2.00 
    texture { tinta_B }
  }

#declare asa =
	 box {<0,0,0>, <1, 3.5, 1> texture{tinta_B} }

#declare texto =
	 text {ttf "arial.ttf" "W" 0.5, 0 rotate 90*z rotate 90*y}	 

#declare raio_giro = 6;
  
// Aqui está a cena, finalmente:
  union {
    object { logo }
    object {asa rotate 30*x*wingtt translate<0,1,0>}
    object {asa rotate 180*z rotate -30*x*wingtt translate<1,-1,0> }
    object {texto}
    
  translate<raio_giro*ctt, raio_giro*stt, 0>
  }
  

#end

// gera o quadro correspondente ao instante dado {clock}:
quadro(clock)