// Exemplo de arquivo de descricao de cena para POV-ray // Last edited on 2003-07-31 12:50:37 by stolfi #include "colors.inc" // ====================================================================== // CÂMERA camera { location < 10.00, 6.00, 2.50 > // Posição do observador. right < -0.80, 0.00, 0.00 > // Largura RELATIVA da imagem. up < 0.00, 0.00, 0.60 > // Altura RELATIVA da imagem. sky < 0.00, 0.00, 1.00 > // Qual direção é "para cima"? look_at < -1.50, 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 { 10 * < +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 { 10 * < +50.0, -10.0, +10.0 > // Posição da lâmpada. color rgb 0.8 * < 1.00, 1.00, 1.00 > // Intensidade e corda luz. } // ====================================================================== // DESCRIÇÃO DA CENA background{ color rgb < 0.75, 0.80, 0.85 > } #declare fonte = 0.5; #declare comp = 30; #declare corpo = union{ sphere {<0,0,0>, comp/4 pigment{Blue}} cylinder { <0,0,0>, <-comp,0,0>, comp/4 pigment {Blue}} sphere {<-comp,0,0>, comp/4 pigment{Blue}} scale <1,1,0.6> } union { #declare final=5; #declare i=0; #while (i, 2.0 <0,5,0>, 0.1 pigment{Green}} #declare antemeio = union { cylinder{ <0,0,0>, <0,10,0>, 2 pigment{Blue}} sphere { <0,10,0>, 2 pigment{Red}} object {ponta rotate angponta*x translate <0,10,0>} } #declare angante = 360 - fonte*90; #declare posmeio = union { cylinder{ <0,0,0>, <0,15,0>, 2 pigment {Blue}} sphere { <0,15,0>, 2 pigment{Red}} object {antemeio rotate angante*x translate <0,15,0>} } #declare angpos = 360 - fonte*90; #declare outraponta = union { sphere{ <0,0,0>, 2 pigment{Red}} cylinder{ <0,0,0>, <0,15,0>, 2 pigment{Blue}} sphere { <0,15,0>, 2 pigment{Red}} object {posmeio rotate angpos*x translate <0,15,0>} } #if (clock<0.5) #declare coiso = (clock*80-20)*(1+(-2*mod(i,2))); #else #declare coiso = (-80*(clock-0.5)+20)*(1+(-2*mod(i,2))); #end #declare angpataz = coiso; #switch (clock) #range (0, 0.25) #declare coiso2 = (-80*clock)*(1+(-2*mod(i,2))); #break #range (0.26, 0.75) #declare coiso2 = (80*clock-40)*(1+(-2*mod(i,2))); #break #else #declare coiso2 = (-80*clock+80)*(1+(-2*mod(i,2))); #end #declare angpatax = fonte*45; #declare pospata = comp - (comp*i)/(final-1); #declare pata = union{ #if (coiso2>0) object { outraponta rotate (angpatax+coiso2)*x rotate angpataz*z translate <-pospata+2,comp/4,0> } object { outraponta rotate (angpatax)*x rotate (180+angpataz)*z translate <-pospata+2,-comp/4,0> } } #else object { outraponta rotate (angpatax)*x rotate angpataz*z translate <-pospata+2,comp/4,0> } object { outraponta rotate (angpatax-coiso2)*x rotate (180+angpataz)*z translate <-pospata+2,-comp/4,0> } } #end object {pata scale 0.1} #declare i=i+1; #end object {corpo scale 0.1} translate }