// Exemplo de arquivo de descricao de cena para POV-ray
// Last edited on 2010-03-04 15:44:01 by stolfi

// ======================================================================
// CORES E TEXTURAS

background{ color rgb < 1, 1, 1 > }

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


#declare tx_xadrez =
  texture{
    pigment{ checker color rgb < 0.10, 0.32, 0.60 >, color rgb < 1.00, 0.97, 0.90 > }
    finish{ diffuse 0.9 ambient 0.1 }
    scale 2.0
  }


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

// Partes da cena:

#declare alturaCabeca = 1.00;
#declare alturaCorpo = 3.00;
#declare alturaPerna = 1.00;
#declare base = 1.000;
#declare alturaDegrau = 1;
#declare alturaPessoa = alturaCabeca/2 + alturaCorpo + alturaPerna;
#declare comprimentoDegrau = 10;
  
#declare cabeca = 
  sphere{ < 0,0,0 >, alturaCabeca/2 texture {tx_pele}} 
  

#declare chao = 
  box{ <-20,-20,-1>, <+20,+20,0> }
  
#declare corpo =
	cone{<0.00, 0.00, -alturaCorpo>, base, <0.00, 0.00, -alturaCabeca/2>, 
		alturaCabeca/4}
		
#declare perna = 
  cylinder{
    < 0.00, 0.00, -alturaPerna/2 >,
    < 0.00, 0.00, +alturaPerna/2 >,
    0.2
    texture {tx_pele}
  }
	
#declare degrau = 
	box{ <-base,0,0>, <base, comprimentoDegrau, alturaDegrau> }
  
#declare pessoa =
  union {
  	object{ cabeca }
  	object{ corpo }
  	object{perna translate <0, -0.2, -alturaCorpo>}
  	object{perna translate <0, +0.2, -alturaCorpo>}
  }
  

#declare pessoas =
	union{
		#declare i = 0;
		#while (i < 5)
			#if (i > 2)
				object {pessoa translate < 0, 1+2*i, alturaPessoa > texture{pigment{color rgb <i/10, 0.5, 0.5>}}}
			#else
				object {pessoa translate < 0, 1+2*i, alturaPessoa > texture{pigment{color rgb <1.0, 0.0, 1.0>}}}
			#end
			#declare i = i+1;
		#end
	}
	
#declare degrauComPessoas = 
	union{
		object{ pessoas }
  		object{ degrau }
  	}
  	
#declare coral =
   union{
   	#declare i = 0;
		#while (i < 5)
			object {degrauComPessoas translate < -base*2*i, 0,  alturaDegrau*i> }
			#declare i = i+1;
		#end
   	}
	
	// #if (cond), igualdade eh =, and eh &, or eh |, diferente !=, >=, <=
	// #else
	// #end

#include "eixos.inc"

// Aqui está a cena, finalmente:
// coral aleatorio:
// uma escada
// varias pessoas
// alguns cantores diferentes (sem uniforme)



union{
  object{ eixos(3.00) }
  object{ chao  translate < 0,0,-5 > texture{ tx_xadrez } }
  object{coral}
}

#include "camlight.inc"
#declare centro_cena = < 0.00, 0.00, 1.00 >;
#declare raio_cena = 12.0;
#declare dir_camera = < 4.00, -2.00, 0.00 >;
//#declare dir_camera = < 0.00, 10.00, 0.00 >;
//#declare dir_camera = < 10.00, 5.00, 0.00 >;
#declare dist_camera = 11.0;
#declare intens_luz = 1.00;
camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)