// Last edited on 2003-12-08 19:41:01 by stolfi #declare ctr = <0,0,120> + <0,0,80*clock>; #declare camDir = <400,200,600>; camera { location ctr + 0.45*camDir right -1.00*x up 0.75*y sky y look_at ctr } // ====================================================================== // FONTES DE LUZ light_source { 10 * < +50.0, +80.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 * < +20.0, +80.0, +50.0 > // Posição da lâmpada. color rgb 0.6 * < 1.00, 1.00, 1.00 > // Intensidade e corda luz. } light_source { 10 * < -10.0, +80.0, +20.0 > // Posição da lâmpada. color rgb 0.4 * < 1.00, 1.00, 1.00 > // Intensidade e corda luz. } // ====================================================================== // DESCRIÇÃO DA CENA background{ color rgb < 0.0, 0.0, 0.5 > } #macro p1(ang1) union { sphere { <0,0,0>,2 } cylinder { <0,0,0>,<10,0,0>,1 } sphere { <10,0,0>,2 } rotate ang1 } #end #macro p2(ang2,ang1) union { sphere { <0,0,0>,2 } cylinder { <0,0,0>,<10,0,0>,1 } object { p1(ang1) translate <10,0,0> } rotate ang2 } #end #macro p3(a3,a2c,a2b,a2a,a1c,a1b,a1a) union { sphere { <0,0,0>,8 } union { object { p2(a2a,a1a) translate<8,0,0>} rotate 30*y } union { object { p2(a2b,a1b) translate<8,0,0>} rotate 30*y rotate 120*x } union { object { p2(a2c,a1c) translate<8,0,0>} rotate 30*y rotate 240*x } rotate a3 } #end #macro p4(a4,a3,a2c,a2b,a2a,a1c,a1b,a1a) union { object { p3(a3,a2c,a1c,a2b,a1b,a2a,a1a) translate<40,0,0> } cylinder { <0,0,0>,<40,0,0>,4 } sphere { <0,0,0>,8 } rotate a4 } #end #macro p5(a5,a4,a3,a2c,a2b,a2a,a1c,a1b,a1a) union { object { p4(a4,a3,a2c,a1c,a2b,a1b,a2a,a1a) translate<40,0,0> } cylinder { <0,0,0>,<40,0,0>,4 } sphere { <0,0,0>,8 } rotate a5 } #end #macro p6(a6,a5,a4,a3,a2c,a2b,a2a,a1c,a1b,a1a) union { object { p5(a5,a4,a3,a2c,a1c,a2b,a1b,a2a,a1a) translate<40,0,0> } cylinder { <0,0,0>,<40,0,0>,4 } //sphere { <0,0,0>,8 } rotate a6 } #end #macro cria1(i,raiz,raio) #local tr=<0,0,0>; /* #local a5=<45,45,45>-90*; #local a4=<45,45,45>-90*; #local a3=<45,45,45>-90*; #local a2a=<45,45,45>-90*; #local a2b=<45,45,45>-90*; #local a2c=<45,45,45>-90*; #local a1a=<45,45,45>-90*; #local a1b=<45,45,45>-90*; #local a1c=<45,45,45>-90*; */ #local cor=; object { p6(<0,0,30>,<0,0,30*sin(2*pi*clock)-60>,<0,0,-30*sin(2*pi*clock)-60>,<0,0,0>,tr,tr,tr,0,0,0) #declare alfa=30; #declare beta=30*clock-60; #declare alfa=alfa*(pi/180); #declare beta=beta*(pi/180); #declare ang=cos(alfa)+cos(alfa+beta); #declare ang=1/ang; #declare ang=acos(ang); #declare ang=ang*(180/pi); rotate<0,30*sin(2*pi*clock+pi),0> //translate<+0,-0,i*40> //rotate<0,45*i,0> pigment{ color rgb cor } } #end //#declare clk =-clock+0.5; #macro cria2(i,raiz,raio) #local tr=<0,0,0>; /* #local a5=<45,45,45>-90*; #local a4=<45,45,45>-90*; #local a3=<45,45,45>-90*; #local a2a=<45,45,45>-90*; #local a2b=<45,45,45>-90*; #local a2c=<45,45,45>-90*; #local a1a=<45,45,45>-90*; #local a1b=<45,45,45>-90*; #local a1c=<45,45,45>-90*; */ #local cor=; object { p6(<0,0,30>,<0,0,30*sin(2*pi*clock+pi)-60>,<0,0,-30*sin(2*pi*clock+pi)-60>,<0,0,0>,tr,tr,tr,0,0,0) /* #declare alfa=30; #declare beta=30*clk-60; #declare alfa=alfa*(pi/180); #declare beta=beta*(pi/180); #declare ang=cos(alfa)+cos(alfa+beta); #declare ang=1/ang; #declare ang=acos(ang); #declare ang=ang*(180/pi); */ rotate<0,30*sin(2*pi*clock),0> //translate<+0,-0,i*40> //rotate<0,45*i,0> pigment{ color rgb cor } } #end #declare raiz=seed(54325); union { #declare i=0; #declare espaco =40; #while(i<3) #declare cc=; sphere { <0,0,0>,8 translate<0,0,i*80> pigment{ color rgb cc }} #declare i=i+1; #end object { cria1(i,raiz,50) translate<0,0,0*80> } object { cria2(i,raiz,50) translate<0,0,0*80> scale<-1,1,1> } object { cria2(i,raiz,50) translate<0,0,1*80> } object { cria1(i,raiz,50) translate<0,0,1*80> scale<-1,1,1> } object { cria1(i,raiz,50) translate<0,0,2*80> } object { cria2(i,raiz,50) translate<0,0,2*80> scale<-1,1,1> } #declare cc=; cylinder { <0,0,-10>,<0,0,170>,4 pigment{ color rgb cc }} translate <0,0,80*clock> } plane { y,0 pigment { checker color <1.00, 0.20, 0.40> color <0.40, 0.20, 1.00> scale 0.5*80} translate -80*y }