// Last edited on 2003-12-08 18:35:14 by stolfi // Exemplo de arquivo de descricao de cena para POV-ray #include "colors.inc" // ====================================================================== plane{ z,-1.5 texture{ pigment{ checker color rgb <0.7,0.6,0.5>, color rgb <0.6,0.5,0.2> } finish{ diffuse 0.7 ambient 0.3 } scale 0.25*5 } } #declare ctr = < -1.50, 0.00, -0.70 > + ; #declare camDir = < 07.50, 9.00, 3.50 >; camera { location ctr + 1.05*camDir right 0.80*x up 0.60*y sky z look_at ctr } // ====================================================================== // FONTES DE LUZ light_source { 10 * < +50.0, +30.0, +70.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, +40.0 > // Posição da lâmpada. color rgb 0.6 * < 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 Azul = pigment{ color rgb < 0.3, 0.4, 1.0 > } #declare comp = 30; #declare corpo = union{ sphere {<0,0,0>, comp/4 pigment{Azul}} cylinder { <0,0,0>, <-comp,0,0>, comp/4 pigment {Azul}} sphere {<-comp,0,0>, comp/4 pigment{Azul}} 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{Azul}} 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 {Azul}} 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{Azul}} 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 }