// ====================================================================== // CÂMERA camera { location 1.2*< 40, 60, 80 > // Posição do observador. right -1.0*x // Largura RELATIVA da imagem. up 0.75*y // Altura RELATIVA da imagem. sky y // Qual direção é "para cima"? look_at < 0.00, 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, +35.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, 50.0, 50.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 < 1, 1, 1 > } #declare source=seed(2718281828); #declare preto = texture { pigment { color rgb < 0, 0, 0 > } finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 } } #macro noh(x0,y0,z0) #declare a = rand(source); #declare b = rand(source); #declare c = rand(source); object { sphere { ,1.5 texture {pigment {color rgb } finish { ambient 0.05 diffuse 0.05 reflection {color rgb} specular 0.2 roughness 0.05 } } }} #end #macro aresta(x0,y0,z0,x1,y1,z1) object { cylinder { ,,0.2 texture { preto } }} #end #macro pacote(lx,ly,lz) box { <-lx/2,-ly/2,-lz/2>, texture {pigment {color rgb } finish { diffuse 0.3 reflection 0.25 specular 1 roughness 0.01 } } interior { ior 1.5 } } #end #macro criax(x0,y0,z0) #declare lx = 3 + rand(source)*5; #declare ly = 3; #declare lz = 1+rand(source)*3; object { pacote(lx,ly,lz) translate } #end #macro criay(x0,y0,z0) #declare lx = 1+rand(source)*3; #declare ly = 3 + rand(source)*5; #declare lz = 3; object { pacote(lx,ly,lz) translate } #end #macro criaz(x0,y0,z0) #declare lx = 1+rand(source)*3; #declare ly = 3; #declare lz = 3 + rand(source)*5; object { pacote(lx,ly,lz) translate } #end #declare lx = 100; #declare ly = 60; #declare lz = 100; #declare nx = 5; #declare ny = 3; #declare nz = 5; #declare x0 = -lx/2; #declare y0 = -ly/2; #declare z0 = -lz/2; #declare dx = lx/nx; #declare dy = ly/ny; #declare dz = lz/nz; #declare pp = 0.3; //probabilidade de existir 1 pacote em uma aresta #declare i = 0; #while(i < nx) #declare j = 0; #while(j < nz) #declare k = 0; #while(k < ny) noh(x0+i*dx,y0+k*dy,z0+j*dz) #if(i+1 < nx) aresta(x0+i*dx,y0+k*dy,z0+j*dz,x0+(i+1)*dx,y0+k*dy,z0+j*dz) #if (rand(source) < pp) criax(x0+i*dx+dx/2,y0+k*dy,z0+j*dz) #end #end #if(j+1 < nz) aresta(x0+i*dx,y0+k*dy,z0+j*dz,x0+i*dx,y0+k*dy,z0+(j+1)*dz) #if (rand(source) < pp) criaz(x0+i*dx,y0+k*dy,z0+j*dz+dz/2) #end #end #if(k+1 < ny) aresta(x0+i*dx,y0+k*dy,z0+j*dz,x0+i*dx,y0+(k+1)*dy,z0+j*dz) #if (rand(source) < pp) criay(x0+i*dx,y0+k*dy+dy/2,z0+j*dz) #end #end #declare k = k+1; #end #declare j = j+1; #end #declare i = i+1; #end /* aresta(0,0,0,10,0,0) cria(10,0,0) noh(0,0,0) cria(-10,0,0) cria(-20,0,0) */