// Exemplo de arquivo de descricao de cena para POV-ray // Last edited on 2020-12-08 11:03:08 by jstolfi #version 3.6; // ====================================================================== // CORES E TEXTURAS background{ color rgb < 0.75, 0.80, 0.85 > } #declare tx_fosca = texture{ pigment{ color rgb < 0.80, 0.00, 0.00 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_links = texture{ pigment{ color rgb < 0.00, 0.00, 0.50 > } finish{ diffuse 0.9 ambient 0.1 } } // ====================================================================== // DESCRIÇÃO DA CENA // Partes da cena: #declare n = 5; #declare m = 3; #declare roleta = seed(25); #include "eixos.inc" #macro arvore(P, S, A, B, T) union{ #if (P.z <= T) //raiz da arvore sphere { < P.x, P.y, P.z >, 0.40 texture{ tx_fosca } } //gerar em media S infectados #local QQ = S/(S + 1); #local dist = -1.50; #while (rand(roleta) < QQ) #local altura = A + rand(roleta) * (B-A); #local novoY = P.y + dist; #local novoZ = P.z + altura; arvore(, S, A, B, T) #if (novoZ <= T) object{ cylinder { , , 0.05 } texture{tx_links} } #end #local dist = dist + 1.00; #end #end } #end #macro diagrama(N, S, A, B, T) union{ #local pacientes = 0; #while (pacientes < N) #local paciX = rand(roleta) * T/3; #local paciY = rand(roleta) * T/3; arvore(, S, A, B, T) #local pacientes = pacientes + 1; #end box{ < 0, 0, 0>, texture{ tx_fosca } } } #end // Aqui está a cena, finalmente: union{ // object{ eixos(3.00) } object{ diagrama(10, 0.80, 2, 3, 30) translate +7*x-18*y } object{ diagrama(10, 1.00, 2, 3, 30) } object{ diagrama(10, 1.25, 2, 3, 30) translate -7*x+18*y } } #include "camlight.inc" #declare centro_cena = < 5.00, 5.00, 15.0 >; #declare raio_cena = 38.0; #declare dir_camera = < 12.00, 14.00, 7.00 >; #declare dist_camera = 12*raio_cena; #declare intens_luz = 1.20; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)