// Last edited on 2004-01-23 02:06:22 by stolfi // ====================================================================== // CÂMERA #declare ctr = < 0.00, 0.00, 0.00 >; #declare camDir = vrotate(< 0, 0, 160 >, (60*clock-30)*y); #declare camZoom0 = 0.30; #declare camZoom1 = 1.00; camera { location ctr + ((1-clock)*camZoom0 + clock*camZoom1)*camDir right -1.00*x up 0.75*y sky y look_at ctr } // ====================================================================== // FONTES DE LUZ light_source { 10 * < +80.0, +80.0, +150.0 > color rgb 1.2 * < 1.00, 1.00, 1.00 > } light_source { 10 * < -50.0, +50.0, +150.0 > color rgb 0.6 * < 1.00, 1.00, 1.00 > } light_source { 10 * < +50.0, -50.0, -150.0 > color rgb 0.4 * < 1.00, 1.00, 1.00 > } // ====================================================================== // DESCRIÇÃO DA CENA background{ color rgb < 0.05, 0.20, 0.35 > } #macro bolinha ( Raio, Cor, Rotacao, Posicao ) sphere { <0,0,0>, Raio pigment { color rgb Cor } rotate Rotacao translate Posicao } #end #macro fiozinho ( Altura, Raio, Cor, Rotacao,Posicao ) cylinder { < 0, -Altura/2, 0 >, < 0, Altura/2, 0 >, Raio pigment { color rgb Cor } rotate Rotacao translate Posicao } #end #macro caixa ( Tam, Cor, Rotacao, Posicao ) box { -Tam/2 Tam/2 pigment { color rgb Cor } rotate Rotacao translate Posicao } #end #macro rosquinha(Menor,Maior,Cor,Rotacao,Posicao ) torus { Maior, Menor pigment { color rgb Cor } rotate Rotacao translate Posicao } #end #declare NoRede=bolinha(0,<0,1,0>,0,<0,0,0>); #declare dim=6; #declare esp=8; #declare c1=-dim; #while(c1<=dim) #declare c2=-dim; #while(c2<=dim) #declare No = bolinha(2,<1,1,1>,0,) #declare NoRede = union { object{NoRede} object{No} } #declare c2 = c2 +1; #end #declare c1 = c1 + 1; #end #declare FioRede=bolinha(0,<1,1,1>,0,<0,0,0>); #declare c1=-dim; #while(c1<=dim) #declare Fio = fiozinho(2*esp*dim,0.5,<0.3,0.3,0.3>,0,) #declare FioRede = union { object{FioRede} object{Fio} } #declare c1= c1 + 1; #end #declare c1=-dim; #while(c1<=dim) #declare Fio = fiozinho(2*esp*dim,0.5,<0.3,0.3,0.3>,90*z,<0,esp*c1,0>) #declare FioRede = union { object{FioRede} object{Fio} } #declare c1= c1 + 1; #end #macro setobj(raiz,px,py) #declare posx=px; #declare posy=py; #declare obj=rand(raiz); #declare cor=; #if(posx>esp*dim) #declare posx=mod(posx+esp*dim,2*esp*dim)-esp*dim; #else #if(posx<-esp*dim) #declare posx=-posx; #declare posx=mod(posx+esp*dim,2*esp*dim)-esp*dim; #declare posx=-posx; #end #end #if(posy>esp*dim) #declare posy=mod(posy+esp*dim,2*esp*dim)-esp*dim; #else #if(posy<-esp*dim) #declare posy=-posy; #declare posy=mod(posy+esp*dim,2*esp*dim)-esp*dim; #declare posy=-posy; #end #end #if(obj<0.33) caixa(<2,2,2>,cor,0,) #else #if(obj<0.64) bolinha(1.2,cor,0,) #else rosquinha(1.2,0.5,cor,0,) #end #end #end #declare raiz=seed(3921035712); #declare NumPak=2*dim*dim; #declare Pacotes=bolinha(0,<0,1,0>,0,<0,0,0>); #declare c1=0; #while(c1=0) #declare si=1; #else #declare si=-1; #end #declare Pak = setobj(raiz,floor((-dim+0.3)+2*dim*rand(raiz))*esp,((2*si*(2*rand(raiz))*clock)+(-dim)+2*dim*rand(raiz))*esp) #declare Pacotes = union { object{Pacotes} object{Pak} } #declare c1=c1 +1; #end #declare c1=0; #while(c1=0) #declare si=1; #else #declare si=-1; #end #declare Pak = setobj(raiz,((2*si*(2*rand(raiz))*clock)+(-dim)+2*dim*rand(raiz))*esp,floor((-dim+0.3)+2*dim*rand(raiz))*esp) #declare Pacotes = union { object{Pacotes} object{Pak} } #declare c1=c1 +1; #end union { object { NoRede } object { FioRede } object { Pacotes } }