// Trabalho prático 03 // ====================================================================== // CORES E TEXTURAS background{ color rgb < 0.75, 0.80, 0.85 > } #declare tx_fosca = texture{ pigment{ color rgb < 1.00, 0.80, 0.10 > } finish{ diffuse 0.9 ambient 0.1 } } // ====================================================================== // DESCRIÇÃO DA CENA #include "eixos.inc" // ====================================================================== // macro mina #macro mina(n,m) union{ #declare roleta = seed(3); //Objetos só podem ter centro dentro desse cubo de area_criacao^3 #declare area_criacao = 100; #declare tam_max = 10; //escolher a posição das camaras e colocar num vetor #declare centro = array[n]; #declare i = 0; #while (i < n) //Cria N camaras #declare xc = int(rand(roleta)*area_criacao); #declare yc = int(rand(roleta)*area_criacao); #declare zc = int(rand(roleta)*area_criacao/2); #declare centro[i] = ; //cria camara com centro[i] #declare w = 1+int(rand(roleta)*tam_max); #declare d = 1+int(rand(roleta)*tam_max); #declare h = 1+int(rand(roleta)*tam_max); object{ camara(centro[i],w,d,h)} #declare i = i +1; #end #declare i = 0; #while (i < m) //Cria M tuneis #declare i1 = int(rand(roleta)*n); #declare i2 = int(rand(roleta)*n); #while (i2 = i1) //encontra um indice diferente de i1 #declare i2 = int(rand(roleta)*n); #end #declare c1 = centro[i1]; #declare c2 = centro[i2]; object{cylinder{c1,c2, 0.3 texture{ tx_fosca }}} #declare i = i +1; #end } #end // ====================================================================== // Desenha camara com centro em largura (w) e profundidade (d), a altura (h) #macro camara(centro,w,d,h) union{ object{ box{ , texture{ tx_fosca } } } } #end // Aqui está a cena, finalmente: union{ object{mina(30,29)} object{ eixos(3.00) translate < 0,0,0 > } } // Detalhes de iluminação e camera #include "camlight.inc" #declare centro_cena = < 50.00, 50.00, 1.00 >; #declare raio_cena = 90.0; #declare dir_camera = < 14.00, 7.00, 4.00 >; #declare dist_camera = 10*raio_cena; #declare intens_luz = 1.20; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)