// 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, 4.00, 2.00 >  // Posição do observador.
  right     -1.00*x                // Largura RELATIVA da imagem.
  up        0.75*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;

#macro interpola(ta, va, tb, vb, tt)
  #local s = (tt-ta)/(tb-ta);
  ((1-s)*va + s*vb)
#end

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

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

#declare tx_parede = 
  texture{
    pigment{ color rgb < 0.65, 0.65, 0.65 > filter 0.70}

  }

#declare tx_timao =
  texture{
      pigment{
        image_map{
          jpeg "foto.jpg"    
        }
        scale 1
        rotate <0,90,0>
      }
  }

#declare tx_bb =
  texture{
      pigment{
        image_map{
          jpeg "bb.jpg"    
        }
        scale 1
        rotate <0,90,00>
      }
  }

#macro timao()
  union{
    object{
      box{
        <1.01,0,1>,
        <1.01,1,1.9>
        texture{ tx_timao}
        rotate 90*x
      }  
    }  
  }

#end

#local ponto11 = <1,0,4>;
#local ponto12 = <1,0.5,3>;
#local ponto13 = <1,0.5,2>;
#local ponto14 = <1,0,1>;

#local ponto21 = <1.1,1,4.2>;
#local ponto22 = <1.1,1.5,3.2>;
#local ponto23 = <1.1,1.5,2.2>;
#local ponto24 = <1.1,1,1.2>;

#local ponto31 = <0.8,2,3.5>;
#local ponto32 = <0.8,2.5,2.5>;
#local ponto33 = <0.8,2.5,1.5>;
#local ponto34 = <0.8,2,0.5>;

#local ponto41 = <1,3,4>;
#local ponto42 = <1,3.5,3>;
#local ponto43 = <1,3.5,2>;
#local ponto44 = <1,3,1>;

#local raio = 0.1;

// Aqui está a cena, finalmente:
#include "eixos.inc"
#include "retalho.inc"

// Aqui está a cena
union{

  //eixos  
  object{ eixos(3.00) }
  
  union{
    object{timao() translate <0, 1.5, 2>}    
    object{
        box{
          <1, -1, 0>,
          <-1, 1, 3>
          texture{ tx_amarelo }
        }  
      }
    translate -1*z  
  }

  object { retalho(
    ponto11, ponto12, ponto13, ponto14,    
    ponto21, ponto22, ponto23, ponto24,
    ponto31, ponto32, ponto33, ponto34,
    ponto41, ponto42, ponto43, ponto44,
    raio,
    tx_amarelo, tx_bb
  ) scale 0.2 translate <0,0,2> }
  

}

#end //fim da macro

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