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

// ======================================================================
// C�ERA 

camera {
  location  <  35.00, 28.0, 15.00 >  // Posi�o do observador.
  right     -1.50*x                // Largura RELATIVA da imagem.
  up        1.00*y                 // Altura RELATIVA da imagem.      
  sky       z                      // Qual dire�o �"para cima"?
  look_at   <  15.00, 15.00, -8.00 >  // Para onde a c�era est�apontando.
} 
// Nota: os par�etros "right" e "up" devem ter a mesma propor�o
// que os par�etros ${WIDTH} e ${HEIGHT} no Makefile.

// ======================================================================
// FONTES DE LUZ

light_source {
  4 * < +40.0, +60.0, +50.0 >              // Posi�o da l�pada.
  color rgb 2.5 * < 1.00, 1.00, 1.00 >   // Intensidade e corda luz.
} 

light_source {
  4 * < -40.0, -40.0, +90.0 >              // Posi�o da l�pada.
  color rgb 0.5 * < 1.00, 1.00, 1.00 >   // Intensidade e corda luz.
} 


// ======================================================================
// DESCRI�O DA CENA 

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



#declare tinta_branca = 
  texture {
    pigment { color rgb < 1.00, 1.00, 1.00 > }
    finish { reflection 0.2 phong 0.4  diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
  }

#declare tinta_preta = 
  texture {
    pigment { color rgb < 0.00, 0.00, 0.00 > }
    finish { reflection 0.6 phong 0.4  diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
  }

#declare tinta_azul = 
  texture {
    pigment { color rgb < 0.30, 0.60, 1.00 > }
    finish { reflection 0.1 phong 1.0 diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
  }

#declare tinta_marrom = 
  texture {
    pigment { color rgb < 0.40, 0.20, 0.10 > }
    finish { reflection 0.1 phong 0.4 diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 }
  }

#declare roleta = seed(1);

#declare i = 0;
#declare j = 0;

#while (i < 30)
	#while (j < 30)
		box {
		< i, j, -1 >,
		< i + 1, j + 1, 0.0 >
		#if (mod(i,2) = 0)
			#if (mod(j,2) = 0) 
				texture { tinta_branca }
			#end
			#if (mod(j,2) != 0)
				texture { tinta_preta }
			#end
		#end

		#if (mod(i,2) != 0)
			#if (mod(j,2) = 0) 
				texture { tinta_preta }
			#end
			#if (mod(j,2) != 0)
				texture { tinta_branca }
			#end
		#end
 		finish { reflection 0.4 phong 0.6}
		}
		#declare j = j+1;
	#end
	#declare j = 0;
	#declare i = i+1;
#end


#declare deslocamento_rei_a_i = 14.5;
#declare deslocamento_rei_a_j = 0.5;

union {
	cone {
		<0 + deslocamento_rei_a_i, 0 + deslocamento_rei_a_j, 0>, 0.4
		<0 + deslocamento_rei_a_i, 0 + deslocamento_rei_a_j, 1.0>, 0.2
		texture { tinta_azul }
	}
	cone {
		<0 + deslocamento_rei_a_i, 0 + deslocamento_rei_a_j, 1.0>, 0.2
		<0 + deslocamento_rei_a_i, 0 + deslocamento_rei_a_j, 1.4>, 0.4
		texture { tinta_azul }
	}
	box {
		<-0.1 + deslocamento_rei_a_i, -0.1 + deslocamento_rei_a_j, 1.4>,
		<0.1 + deslocamento_rei_a_i, 0.1 + deslocamento_rei_a_j, 2.0>
		texture { tinta_azul }
		
	}
	box {
		<-0.3 + deslocamento_rei_a_i, -0.1 + deslocamento_rei_a_j, 1.6>,
		<0.3 + deslocamento_rei_a_i, 0.1 + deslocamento_rei_a_j, 1.8>
		texture { tinta_azul }
		
	}
}


#declare deslocamento_rei_a_i = 15.5;
#declare deslocamento_rei_a_j = 29.5;

union {
	cone {
		<0 + deslocamento_rei_a_i, 0 + deslocamento_rei_a_j, 0>, 0.4
		<0 + deslocamento_rei_a_i, 0 + deslocamento_rei_a_j, 1.0>, 0.2
		texture { tinta_marrom }
	}
	cone {
		<0 + deslocamento_rei_a_i, 0 + deslocamento_rei_a_j, 1.0>, 0.2
		<0 + deslocamento_rei_a_i, 0 + deslocamento_rei_a_j, 1.4>, 0.4
		texture { tinta_marrom }
	}
	box {
		<-0.1 + deslocamento_rei_a_i, -0.1 + deslocamento_rei_a_j, 1.4>,
		<0.1 + deslocamento_rei_a_i, 0.1 + deslocamento_rei_a_j, 2.0>
		texture { tinta_marrom }
		
	}
	box {
		<-0.3 + deslocamento_rei_a_i, -0.1 + deslocamento_rei_a_j, 1.6>,
		<0.3 + deslocamento_rei_a_i, 0.1 + deslocamento_rei_a_j, 1.8>
		texture { tinta_marrom }
		
	}
}

#declare torres = 0;

#while (torres < 30)

	#declare deslocamento_i = int(rand(roleta)*30) + 0.5;
	#declare deslocamento_j = int(rand(roleta)*2) + 0.5;
	
	union {
		cone {
			<0 + deslocamento_i, 0 + deslocamento_j, 0>, 0.4
			<0 + deslocamento_i, 0 + deslocamento_j, 1.0>, 0.2
			texture { tinta_azul }
		}
		
		difference {
			cylinder {
				< 0 + deslocamento_i, 0 + deslocamento_j, 1.0 >,
				< 0 + deslocamento_i, 0 + deslocamento_j, 1.3 >,
				0.3
				texture { tinta_azul }
			}
			cylinder {
				< 0 + deslocamento_i, 0 + deslocamento_j, 1.1 >,
				< 0 + deslocamento_i, 0 + deslocamento_j, 1.4 >,
				0.28
				texture { tinta_azul }
			}
		}
	}

	#declare torres = torres + 1;
#end


#declare torres = 0;

#while (torres < 30)

	#declare deslocamento_i = int(rand(roleta)*30) + 0.5;
	#declare deslocamento_j = int(rand(roleta)*3) + 27.5;
	
	union {
		cone {
			<0 + deslocamento_i, 0 + deslocamento_j, 0>, 0.4
			<0 + deslocamento_i, 0 + deslocamento_j, 1.0>, 0.2
			texture { tinta_marrom }
		}
		
		difference {
			cylinder {
				< 0 + deslocamento_i, 0 + deslocamento_j, 1.0 >,
				< 0 + deslocamento_i, 0 + deslocamento_j, 1.3 >,
				0.3
				texture { tinta_marrom }
			}
			cylinder {
				< 0 + deslocamento_i, 0 + deslocamento_j, 1.1 >,
				< 0 + deslocamento_i, 0 + deslocamento_j, 1.4 >,
				0.28
				texture { tinta_marrom }
			}
		}
	}

	#declare torres = torres + 1;
#end


#declare peoes = 0;

#while (peoes < 70)

	#declare deslocamento_i = int(rand(roleta)*30) + 0.5;
	#declare deslocamento_j = int(rand(roleta)*20) + 3.5;


	union {
		cone {
			<0 + deslocamento_i, 0 + deslocamento_j, 0>, 0.4
			<0 + deslocamento_i, 0 + deslocamento_j, 0.8>, 0.2
			texture { tinta_azul }
		}
		sphere {
			< 0 + deslocamento_i, 0 + deslocamento_j, 1 >, 0.3 
			texture { tinta_azul }
		}
	}
	#declare peoes = peoes + 1;
#end


#declare peoes = 0;

#while (peoes < 70)

	#declare deslocamento_i = int(rand(roleta)*30) + 0.5;
	#declare deslocamento_j = int(rand(roleta)*20) + 7.5;


	union {
		cone {
			<0 + deslocamento_i, 0 + deslocamento_j, 0>, 0.4
			<0 + deslocamento_i, 0 + deslocamento_j, 0.8>, 0.2
			texture { tinta_marrom }
		}
		sphere {
			< 0 + deslocamento_i, 0 + deslocamento_j, 1 >, 0.3 
			texture { tinta_marrom }
		}
	}
	#declare peoes = peoes + 1;
#end