// Last edited on DATE TIME by stolfi
// Exemplo de arquivo de descricao de cena para POV-ray
#include "colors.inc"
// ======================================================================

#declare ctr = < -1.50, 0.00, 0.00 >;
#declare camDir = (< 10.00, 6.00, 2.50 >) - (< -1.50, 0.00, 0.00 >);

camera {
  location   ctr + 1.00*camDir
  right      0.80*x
  up         0.60*y
  sky        z
  look_at    ctr
}
 

// ======================================================================
// 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 fonte = seed (234765);
//rand(fonte)

#declare comp = 30;
#declare corpo = 
union{
sphere {<0,0,0>, comp/4 pigment{Blue}}
cylinder { <0,0,0>, <-comp,0,0>, comp/4 pigment {Blue}}
sphere {<-comp,0,0>, comp/4 pigment{Blue}}
scale <1,1,0.6>
}

#declare final=5;
#declare i=0;
#while (i<final)
#declare angponta = 270 + rand(fonte)*90;

#declare ponta = 
cone { <0,0,0>, 2.0 <0,5,0>, 0.1 pigment{Green}}

#declare antemeio = 
union {
  cylinder{ <0,0,0>, <0,10,0>, 2 pigment{Blue}}
  sphere { <0,10,0>, 2 pigment{Red}}
  object {ponta rotate angponta*x translate <0,10,0>}
}

#declare angante = 360 - rand(fonte)*90;

#declare posmeio = 
union {
  cylinder{ <0,0,0>, <0,15,0>, 2 pigment {Blue}}
  sphere { <0,15,0>, 2 pigment{Red}}
  object {antemeio rotate angante*x translate <0,15,0>}
}

#declare angpos = 360 - rand(fonte)*90;

#declare outraponta = 
union {
  sphere{ <0,0,0>, 2 pigment{Red}}
  cylinder{ <0,0,0>, <0,15,0>, 2 pigment{Blue}}
  sphere { <0,15,0>, 2 pigment{Red}}
  object {posmeio rotate angpos*x translate <0,15,0>}
}

#declare angpatax = rand(fonte)*45;
#declare angpataz = rand(fonte)*20;
#declare pospata = comp - (comp*i)/(final-1);

#declare pata = 
union{
object { outraponta rotate angpatax*x  rotate angpataz*z 
         translate <-pospata+2,comp/4,0> }
object { outraponta rotate angpatax*x  rotate (180-angpataz)*z 
         translate <-pospata+2,-comp/4,0> }
}

object {pata scale 0.1}
#declare i=i+1;
#end
object {corpo scale 0.1}