// Last edited on 2004-01-23 13:19:14 by stolfi #include "colors.inc" #declare NI = 3; #declare NJ = 3; #declare passo = 4; // #declare NI = 4; // #declare NJ = 5; // #declare passo = 6; background{ color rgb<1,1,1> } #declare ctr = 0.5 * passo * < NJ-1, NI-1, 0.00 >; #declare camDir = (NI+NJ)*passo/24*< 8.00, 7.00, 20.00>; camera { location ctr + 0.65*camDir right -1.00*x up 0.75*y sky y look_at ctr } light_source { 10 * < +20.0, +30.0, +50.0 > color rgb 1.0 * < 1.00, 1.00, 1.00 > } light_source { 10 * < +30.0, -10.0, +10.0 > color rgb 0.6 * < 1.00, 1.00, 1.00 > } light_source { 10 * < 4.0, 10.0, +30.0 > color rgb 0.3 * < 1.00, 1.00, 1.00 > } #declare cor_no = < 0.3,0.8,1.0 >; //eixos #declare eixox = cylinder { < -5.00, 0.00, 0.00 >, < 5.00, 0.00, 0.00 >, 0.05 pigment { color cor_no } } #declare eixoy = cylinder { < 00, -5.00, 0.00 >, < 00, 5.00, 0.00 >, 0.05 pigment { color cor_no } } #declare eixoz = cylinder { < 0.0, 00, -5.00 >, < 0.0, 00, 5.00 >, 0.05 pigment { color cor_no } } #declare host = sphere { < 0, 0, 0 >,0.5 pigment{color cor_no} } #declare enlace = cylinder { < 0.0, -passo/2, 0.00 >, < 0.0, +passo/2, 0.00 >, 0.1 pigment{color Yellow} } #declare i=0; #declare j=0; #while (j < NJ) #while (i < NI) object { host translate passo*i*y translate passo*j*x} #declare k=0; #while (k <3) #if(j < NJ-1) #if(i < NI-1) object { enlace translate <0,passo/2,0> translate passo*i*y // + j*z translate passo*k*x pigment { color Yellow } } object {enlace rotate z*90 translate translate passo*j*x translate passo*k*y // + i*z } #end #end #declare k=k+1; #end #declare i=i+1; #end #declare i=0; #declare j=j+1; #end #declare pacote = box{ <-0.5,-0.50,0> <0.5,0.5,0.3> } //caminho #declare p=0; #declare fonte=seed(123456); #if(clock<=0.25) #declare p1=1; #declare p2=0; #declare p3=0; #declare p4=0; #declare time=(clock)/(0.25); #else #if(clock>0.25) #if(clock<=0.5) #declare p1=0; #declare p2=1; #declare p3=0; #declare p4=0; #declare time=(clock-0.25)/(0.5-0.25); #else #if(clock<=0.75) #declare p1=0; #declare p2=0; #declare p3=1; #declare p4=0; #declare time=(clock-0.5)/(0.75-0.5); #else #declare p1=0; #declare p2=0; #declare p3=0; #declare p4=1; #declare time=(clock-0.75)/(1-0.75); #end #end #end #end //4 direcoes possiveis #declare pos1=time*(passo); #declare pos2=(1-time)*(passo)+time*(2*passo); #declare pos3=(1-time)*(2*passo)+time*(passo); #declare pos4=(1-time)*(passo); #declare p=0; #while(p<20) #declare r = rand(fonte); #if(r<=0.25) object{pacote pigment{color rgb} translate p1* translate p2* translate p3* translate p4*<2*passo,pos2,0> } #else #if(r<=0.5) object{pacote pigment{color rgb} translate p1*<0,pos1,0> translate p2*<0,pos2,0> translate p3* translate p4* } #else #if(r<=0.75) object{pacote pigment{color rgb} translate p1*<2*passo,pos1,0> translate p2*<2*passo,pos2,0> translate p3*<2*passo,pos3,0> translate p4*<2*passo,pos4,0> } #else object{pacote pigment{color rgb} translate p1* translate p2* translate p3*<0,pos3,0> translate p4*<0,pos4,0> } #end #end #end #declare p=p+1; #end // Aqui está a cena, finalmente: union { //object{eixox} //object{eixoy} //object{eixoz} }