// Exemplo de arquivo de descricao de cena para POV-ray
// Last edited on 2003-09-04 15:25:26 by stolfi

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

camera {
  location  <  10.00, 20.00, 50.00 >  // Posição do observador.
  right     -0.75*x                // Largura RELATIVA da imagem.
  up        1.00*y                 // Altura RELATIVA da imagem.      
  sky       y                      // 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;

  plane { y, -2
   texture {
    pigment { checker color rgb < 0.40, 0.20, 0.30 >, color rgb < 0.50, 0.20, 0.40 > }
    finish { ambient 0.1 diffuse 0.9 }
   scale 0.5
   }
  }
  
  
#macro arvore(a,b,c) 
union{
sphere{
<a,b,c>,0.3
pigment{ color rgb <0.5,0.6,0.3>}
}
#if(b>0)

cylinder{
<a,b,c>,
<a+b*b,b-1,c>,0.1
pigment{ color rgb <0.8,0.2,0.2>}
}
object{arvore(a+b*b,b-1,c)}

cylinder{
<a,b,c>,
<a,b-1,c-b*b>,0.1
pigment{ color rgb <0.2,0.2,0.8>}
}
object{arvore(a,b-1,c-b*b)}

cylinder{
<a,b,c>,
<a-b*b,b-1,c>,0.1
pigment{ color rgb <0.2,0.8,0.2>}
}
object{arvore(a-b*b,b-1,c)}

cylinder{
<a,b,c>,
<a,b-1,c+b*b>,0.1
pigment{ color rgb <0.7,0.7,0.7>}
}
object{arvore(a,b-1,c+b*b)}

#end
}
#end 
  
  
// Aqui está a cena, finalmente:

object{arvore(0,5,0)}