// Exemplo de arquivo de descricao de cena para POV-ray // Last edited on 2009-03-09 18:44:03 by stolfi // ====================================================================== // CÂMERA camera{ location <20, 3, 10> // Posição do observador. //right -0.45*x // Largura RELATIVA da imagem. right -1*x // Largura RELATIVA da imagem. //up 0.60*y // Altura RELATIVA da imagem. up y sky z // Qual direção é "para cima"? look_at < 0.00, 0.00, 4.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{ 10 * < +50.0, +30.0, +30.0 > // Posição da lâmpada. color rgb 1.0 * < 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.5 * < 1.00, 1.00, 1.00 > // Intensidade e corda luz. } // ====================================================================== // EIXOS DE COORDENADAS #macro eixo(ponta,cor,nome) union{ sphere{ <0,0,0>, 0.02 } cylinder{ <0,0,0>, 0.91*ponta, 0.02 } cone{ 0.90*ponta, 0.06, ponta, 0.00 } texture{ pigment{ color rgb cor } finish{ ambient 0.5 diffuse 0.5 } } } #end #macro eixos(tamanho) union{ object{ eixo( , <1.0,0.2,0.2>, "X") } object{ eixo( <0,tamanho,0>, <0.0,0.8,0.0>, "Y") } object{ eixo( <0,0,tamanho>, <0.3,0.3,1.0>, "Z") } } #end // ====================================================================== // CORES E TEXTURAS background{ color rgb < 0.75, 0.80, 0.85 > } #declare tx_1 = texture{ pigment{ color rgb < 1, 1, 1 > } finish{ diffuse 0.9 ambient 0.5 specular 0.5 roughness 0.005 } } // ====================================================================== // DESCRIÇÃO DA CENA /*#declare s = seed (0); #declare t1p1 = <1, 0>; #declare t1p2 = <1, 1>; #declare t1p3 = <1, 2>; #declare t1p6 = <1.5 - rand(s), 5>; #declare t1p7 = <1.5 - rand(s), 6>; #declare t1p10 = <1.5 - rand(s), 9>; #declare t1p11 = <1.5 - rand(s), 10>; #declare t1p14 = <1.5 - rand(s), 13>; #declare t1p15 = <1.5 - rand(s), 14>; #declare t1p18 = <1.5 - rand(s), 17>; #declare t1p19 = <1.5 - rand(s), 18>; #declare t1p22 = <1.5 - rand(s), 21>; #declare t1p23 = <1.5 - rand(s), 22>; #declare t1p26 = <1.5 - rand(s), 25>; #declare t1p27 = <1.5 - rand(s), 26>; #declare t1p30 = <1, 29>; #declare t1p31 = <1, 30>; #declare t1p32 = <1, 31>; #declare t1p4 = (t1p3+t1p6)*0.5; #declare t1p5 = t1p4; #declare t1p8 = (t1p7+t1p10)*0.5; #declare t1p9 = t1p8; #declare t1p12 = (t1p11+t1p14)*0.5; #declare t1p13 = t1p12; #declare t1p16 = (t1p15+t1p18)*0.5; #declare t1p17 = t1p16; #declare t1p20 = (t1p19+t1p22)*0.5; #declare t1p21 = t1p20; #declare t1p24 = (t1p23+t1p26)*0.5; #declare t1p25 = t1p24; #declare t1p28 = (t1p27+t1p30)*0.5; #declare t1p29 = t1p28; #declare colunaT1 = lathe { bezier_spline 32, t1p1 t1p2 t1p3 t1p4 t1p5 t1p6 t1p7 t1p8 t1p9 t1p10 t1p11 t1p12 t1p13 t1p14 t1p15 t1p16 t1p17 t1p18 t1p19 t1p20 t1p21 t1p22 t1p23 t1p24 t1p25 t1p26 t1p27 t1p28 t1p29 t1p30 t1p31 t1p32 texture {tx_1} transform{scale <1, 0.05, 1> rotate <90, 0, 0>} }*/ #macro ColunaTipo1(h, s) #declare sca = 0.25; #declare p = array[4*h]; /* Pontos fixos */ #declare p[0] = <1, 0>; #declare p[4*h-1] = <1, (4*h-1)*sca>; #declare i = 1; #while (i < 4*h) #if (mod(i,4) = 1 | mod(i,4) = 2) // O "raio" do lathe fica em qualquer secção horizontal [0.5, 1.5] #declare p[i] = <1.5-rand(s), i*sca>; #end #declare i = i+1; #end /* Médias Assim p[3] = p[4] = (p[2]+p[5])/2 p[7] = p[8] = (p[6]+p[9])/2 ... */ #declare i = 3; #while (i+2 < 4*h) #declare p[i] = (p[i-1]+p[i+2])*0.5; #declare p[i+1] = p[i]; #declare i = i+4; #end lathe { bezier_spline 4*h #declare i = 0; #while (i < 4*h) p[i] #declare i = i+1; #end texture {tx_1} transform{rotate <90, 0, 0>} } #end // ColunaTipo1 #macro ColunaTipo2(n, s) #declare p = array[4*n]; #declare i = 1; #while (i < 4*n) #if (mod(i,4) = 1 | mod(i,4) = 2) #declare a = (2*3.14156)/(4*n); // A distância entre o "centro" e o ponto está entre 0.5 e 1.5 #declare p[i] = * (rand(s) + 0.5); #end #declare i = i+1; #end #declare i = 1; #while (i < 4*n) #if (mod(i,4) = 3) #declare p[i] = (p[mod(i+(4*n)-1,4*n)]+p[mod(i+2,4*n)])*0.5; #declare p[mod(i+1,4*n)] = p[i]; #end #declare i = i+1; #end prism { linear_sweep bezier_spline 0, 2, 4*n, #declare i = 0; #while (i < 4*n) p[i] #declare i = i+1; #end texture {tx_1} transform{rotate <90, 0, 0>} } #end // ColunaTipo2 /*#object { ColunaTipo2 (10, seed(0)) }*/ #declare templo = union { //piso box { 0, /* phi */ <-1.6180339887, 1, 0.001> scale <20, 20, 20> texture {tx_1} } /* Colunas frontais */ object { ColunaTipo2 (7, seed(0)) transform { translate <-1, 1, 0> scale <0.5, 0.5, 2>} } object { ColunaTipo2 (7, seed(1)) transform { translate <-1, 5, 0> scale <0.5, 0.5, 2>} } object { ColunaTipo2 (7, seed(2)) transform { translate <-1, 9, 0> scale <0.5, 0.5, 2>} } object { ColunaTipo2 (7, seed(3)) transform { translate <-1, 13, 0> scale <0.5, 0.5, 2>} } object { ColunaTipo2 (7, seed(4)) transform { translate <-1, 1+26, 0> scale <0.5, 0.5, 2>} } object { ColunaTipo2 (7, seed(5)) transform { translate <-1, 5+26, 0> scale <0.5, 0.5, 2>} } object { ColunaTipo2 (7, seed(6)) transform { translate <-1, 9+26, 0> scale <0.5, 0.5, 2>} } object { ColunaTipo2 (7, seed(7)) transform { translate <-1, 13+26, 0> scale <0.5, 0.5, 2>} } /* Colunas laterais esquerda*/ object { ColunaTipo1 (8, seed(0)) transform { translate <-5, 1, 0> scale <0.5, 0.5, 0.5>} } object { ColunaTipo1 (8, seed(0)) transform { translate <-10, 1, 0> scale <0.5, 0.5, 0.5>} } object { ColunaTipo1 (8, seed(0)) transform { translate <-15, 1, 0> scale <0.5, 0.5, 0.5>} } object { ColunaTipo1 (8, seed(0)) transform { translate <-20, 1, 0> scale <0.5, 0.5, 0.5>} } object { ColunaTipo1 (8, seed(0)) transform { translate <-25, 1, 0> scale <0.5, 0.5, 0.5>} } object { ColunaTipo1 (8, seed(0)) transform { translate <-30, 1, 0> scale <0.5, 0.5, 0.5>} } object { ColunaTipo1 (8, seed(0)) transform { translate <-35, 1, 0> scale <0.5, 0.5, 0.5>} } object { ColunaTipo1 (8, seed(0)) transform { translate <-40, 1, 0> scale <0.5, 0.5, 0.5>} } object { ColunaTipo1 (8, seed(0)) transform { translate <-45, 1, 0> scale <0.5, 0.5, 0.5>} } object { ColunaTipo1 (8, seed(0)) transform { translate <-50, 1, 0> scale <0.5, 0.5, 0.5>} } object { ColunaTipo1 (8, seed(0)) transform { translate <-55, 1, 0> scale <0.5, 0.5, 0.5>} } /*object { ColunaTipo1 (8, seed(0)) transform { translate <-60, 1, 0> scale <0.5, 0.5, 0.5>} }*/ /* Colunas laterais direita*/ object { ColunaTipo1 (8, seed(0)) transform { translate <-5, 39, 0> scale <0.5, 0.5, 0.5>} } object { ColunaTipo1 (8, seed(0)) transform { translate <-10, 39, 0> scale <0.5, 0.5, 0.5>} } object { ColunaTipo1 (8, seed(0)) transform { translate <-15, 39, 0> scale <0.5, 0.5, 0.5>} } object { ColunaTipo1 (8, seed(0)) transform { translate <-20, 39, 0> scale <0.5, 0.5, 0.5>} } object { ColunaTipo1 (8, seed(0)) transform { translate <-25, 39, 0> scale <0.5, 0.5, 0.5>} } object { ColunaTipo1 (8, seed(0)) transform { translate <-30, 39, 0> scale <0.5, 0.5, 0.5>} } object { ColunaTipo1 (8, seed(0)) transform { translate <-35, 39, 0> scale <0.5, 0.5, 0.5>} } object { ColunaTipo1 (8, seed(0)) transform { translate <-40, 39, 0> scale <0.5, 0.5, 0.5>} } object { ColunaTipo1 (8, seed(0)) transform { translate <-45, 39, 0> scale <0.5, 0.5, 0.5>} } object { ColunaTipo1 (8, seed(0)) transform { translate <-50, 39, 0> scale <0.5, 0.5, 0.5>} } object { ColunaTipo1 (8, seed(0)) transform { translate <-55, 39, 0> scale <0.5, 0.5, 0.5>} } /*object { ColunaTipo1 (8, seed(0)) transform { translate <-60, 39, 0> scale <0.5, 0.5, 0.5>} }*/ /* Colunas traseiras */ object { ColunaTipo2 (20, seed(0)) transform { translate <-60, 1, 0> scale <0.5, 0.5, 2>} } object { ColunaTipo2 (20, seed(0)) transform { translate <-60, 5, 0> scale <0.5, 0.5, 2>} } object { ColunaTipo2 (20, seed(0)) transform { translate <-60, 9, 0> scale <0.5, 0.5, 2>} } object { ColunaTipo2 (20, seed(0)) transform { translate <-60, 13, 0> scale <0.5, 0.5, 2>} } object { ColunaTipo2 (20, seed(0)) transform { translate <-60, 17, 0> scale <0.5, 0.5, 2>} } object { ColunaTipo2 (20, seed(0)) transform { translate <-60, 23, 0> scale <0.5, 0.5, 2>} } object { ColunaTipo2 (20, seed(0)) transform { translate <-60, 1+26, 0> scale <0.5, 0.5, 2>} } object { ColunaTipo2 (20, seed(0)) transform { translate <-60, 5+26, 0> scale <0.5, 0.5, 2>} } object { ColunaTipo2 (20, seed(0)) transform { translate <-60, 9+26, 0> scale <0.5, 0.5, 2>} } object { ColunaTipo2 (20, seed(0)) transform { translate <-60, 13+26, 0> scale <0.5, 0.5, 2>} } // Teto box { <0, 0, 4>, /* phi */ <-1.6180339887, 1, 5> scale <20, 20, 1> texture {tx_1} } prism { linear_sweep linear_spline 0, 1.6180339887, 3, <0.5,0>, <0,2>, <-0.5,0> texture {tx_1} transform { rotate <0,0,90> translate <0,0.5,5> scale <20, 20, 1> } } } #object { templo translate <0, -10, 0> } //eixos(10)