// TP07-2 - 04/11/03 #include "colors.inc" // ====================================================================== // CÂMERA camera { location < 0.00, 30.00, 7.00 > // Posição do observador. right 0.75*x // Largura RELATIVA da imagem. up 1.00*y // Altura RELATIVA da imagem. sky z // 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 { 50 * < -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 { 50 * < -50.0, 10.0, -50.0 > // Posição da lâmpada. color rgb 0.8 * < 1.00, 1.00, 1.00 > // Intensidade e corda luz. } light_source { 50*< -10, 12.00, -15.00 > color rgb 1.2*< 1.00, 1.00, 1.00 > } light_source { 50*< 30, 3.00, -5.00 > color rgb 0.8*< 1.00, 1.00, 1.00 > } light_source { 50*< 10, 4.00, -15.00 > color rgb 1.2*< 1.00, 1.00, 1.00 > } // ====================================================================== // DESCRIÇÃO DA CENA background{ color rgb < 0.85, 0.90, 0.95 > } //background{ color rgb < 0.90, 0.90, 0.90 > } #declare tinta_bicho = texture { pigment { color rgb < 0.10, 0.80, 1.00 > } finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 } } #declare tinta_cinza = texture { pigment { Gray75 } finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 } } #declare tinta_vermelha = texture { pigment { color rgb < 1.00, 0.00, 0.00 > } finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 } } #declare raio_corpo = 4; #declare chao = plane { z, -raio_corpo+1.5 pigment {color rgb <1.0,1.0,0.6> } } #declare bicho = union { #declare fator_x = 2.0; #declare fator_y = 0.5; #declare corpo = difference { sphere { < 0.00, 0.00, 0.00>, raio_corpo } box { < -raio_corpo-0.50, -raio_corpo-0.50, 0.00>, < raio_corpo+0.50, raio_corpo+0.50, raio_corpo+0.50 > } scale texture { tinta_bicho } } #declare elipse_a = fator_x * raio_corpo; #declare elipse_b = fator_y * raio_corpo; #declare raio_cabeca = 1.2; #declare raio_pescoco = 0.5; #declare cabeca = difference { union { sphere { < 0.00, 0.00, 0.00>, raio_cabeca } cylinder { < 0.00, 0.00, 0.00> < -raio_cabeca - 1.00, 0.00, 0.00>, raio_pescoco } } box { < -raio_cabeca-1.00, -raio_cabeca-1.00, 0.00>, < raio_cabeca+1.00, raio_cabeca+1.00, raio_cabeca+1.00 > } texture { tinta_bicho } } object { corpo } object { cabeca translate rotate 45*y translate } #declare base = 0.8; #declare pos_x = -elipse_a+base; #declare compr_1 = 0.50; #declare compr_2 = 0.70; #declare compr_3 = 0.70; #declare compr_4 = 0.50; #declare raio = 0.2; #declare maxi = 14; //deve ser um numero par que divido por 2 dah um numero impar //pernas #declare n = 1; #while(n <= maxi) #if(mod(n,2)=0) #declare clockp = clock; #else #declare clockp = mod(clock+0.5 , 1); #end #if (clockp < 0.5) #declare tp = (clockp-0.0)/(0.5-0.0); #declare a = -75 * (1-tp) + tp * (-15); #declare b = -15 * (1-tp) + tp * (-10); #declare c = -15 * (1-tp) + tp * (-35); #declare d = -35 * (1-tp) + tp * (-75); #else #declare tp = (clockp-0.5)/(1.0-0.5); #if (tp < 0.3) #declare tp2 = (tp-0.0)/(0.3-0.0); #declare a = -15; #declare b = -10; #declare c = -35; #declare d = -75 * (1-tp2) + tp2 * (-20); #else #declare tp2 = (tp-0.3)/(1.0-0.3); #if (tp2 < 0.6) #declare tp3 = (tp2-0.0)/(0.6-0.0); #declare a = -15; #declare b = -10 * (1-tp3) + tp3 * (-55); #declare c = -35 * (1-tp3) + tp3 * (-25); #declare d = -20; #else #declare tp3 = (tp2-0.6)/(1.0-0.6); #declare a = -15 * (1-tp3) + tp3 * (-65); #declare b = -55 * (1-tp3) + tp3 * (-35); #declare c = -25 * (1-tp3) + tp3 * (-5); #declare d = -20 * (1-tp3) + tp3 * (-35); #end #end #end #declare perna_4 = union{ cylinder { < 0.00, 0.00, 0.00 >, < compr_4, 0.00, 0.00 >, raio } sphere { < compr_4, 0.00, 0.00 >, raio } texture { tinta_bicho } } #declare perna_3 = union{ cylinder { < 0.00, 0.00, 0.00 >, < compr_3, 0.00, 0.00 >, raio } sphere { < compr_3, 0.00, 0.00 >, raio } object { perna_4 rotate d*y translate < compr_3, 0.00, 0.00> } texture { tinta_bicho } } #declare perna_2 = union{ cylinder { < 0.00, 0.00, 0.00 >, < compr_2, 0.00, 0.00 >, raio } sphere { < compr_2, 0.00, 0.00 >, raio } object { perna_3 rotate c*y translate < compr_2, 0.00, 0.00> } texture { tinta_bicho } } #declare perna_1 = union{ sphere { < 0.00, 0.00, 0.00 >, raio } cylinder { < 0.00, 0.00, 0.00 >, < compr_1, 0.00, 0.00 >, raio } sphere { < compr_1, 0.00, 0.00 >, raio } object { perna_2 rotate b*y translate < compr_1, 0.00, 0.00> } texture { tinta_bicho } } #if (n <= maxi/2) object { perna_1 rotate a*y translate } #declare pos_x = pos_x + ((2*(elipse_a-base))/((maxi/2)-1)); #if (n = maxi/2) #declare pos_x = -elipse_a+base; #end #else object { perna_1 rotate a*y translate } #declare pos_x = pos_x + ((2*(elipse_a-base))/((maxi/2)-1)); #end #declare n = n + 1; #end } object {bicho rotate 180*x} object {chao}