/////////////////////////////////////////// // Computacao Grafica // // Exercicio de POV-Ray // 09/11/2000 ////////////////////////////////////////// // // Luciano Rodrigues Poli - RA 971096 // ////////////////////////////////////////// // Importacao de bibliotecas de cores e texturas pre-definidas. #include "textures.inc" #include "colors.inc" // Declaracao de cores utilizadas na imagem #declare vermelho = rgb < 1.00, 0.00, 0.00 >; #declare marrom = rgb < 0.50, 0.30, 0.00 >; #declare verde = rgb < 0.00, 1.00, 0.00 >; #declare bege = rgb < 1.00, 0.90, 0.70 >; #declare amarelo = rgb < 1.00, 1.00, 0.00 >; #declare azul = rgb < 0.00, 0.00, 1.00 >; #declare cinza = rgb < 0.60, 0.60, 0.60 >; #declare preto = rgb < 0.10, 0.10, 0.10 >; #declare branco = rgb < 1.00, 1.00, 1.00 >; // Declaracao de parametros iniciais background{ color branco } light_source { < -5.00, 6.00, -10.00 > color branco } camera { angle 15 location < -15.00, 6.00, -30.00 > look_at < 3.00, 1.00, 0.00 > } #declare base = seed(pi); // Variavel que conta o numero de predios desenhados #declare contador = 0; #declare cor = LightGray; #while(contador < 5) // Varia as cores dos predios da cidade #if (contador = 1) #declare cor = Blue; #end #if (contador = 2) #declare cor = Red; #end #if (contador = 3) #declare cor = Green; #end #if (contador = 4) #declare cor = Brown; #end #declare terreo = difference { // andar terreo box { <0.00, 0.00, 0.00>, <0.8, 0.6, 0.6> pigment {color cor} } // Porta do andar terreo box { <0.2, 0.00, -0.1>, <0.6, 0.4, 0.3> pigment {color Black} } } #declare andar = difference { // andar box { <0.00, 0.6, 0.00>, <0.8, 1.2, 0.6> pigment {cor} } // janela da frente da esquerda box { <0.1, 0.7, -0.1>, <0.35, 1.1, 0.3> pigment {Black} } // janela da frente da direita box { <0.45, 0.7, -0.10>, <0.7, 1.1, 0.3> pigment {Black} } // janela lateral box { <-0.1, 0.8, 0.2>, <0.3, 1.0, 0.4> pigment {Black} } } union { object {terreo} // Variavel que ira contar o numero de andares que foram desenhados #declare indice = 0; #while (indice < 1+int(rand(base)*5)) //Desenha um andar do predio object{andar translate <0.0, (0.6*indice), 0.0> } // Atualiza contador de andares #declare indice = indice+1; #end translate <0.9*contador, 0.0, 0.0> } // Atualiza contador de predios #declare contador = contador+1; #end