// Exemplo de arquivo de descricao de cena para POV-ray // Last edited on 2021-12-09 09:01:15 by stolfi // ====================================================================== // CORES E TEXTURAS background{ color rgb < 0.75, 0.80, 0.85 > } #declare tx_verde = texture{ pigment{ color rgb < 0.15, 1.00, 0.15 > } finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } } #declare tx_vermelho = texture{ pigment{ color rgb < 1.00, 0.10, 0.10 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_azul = texture{ pigment{ color rgb < 0.10, 0.40, 1.00 > } finish{ diffuse 0.9 ambient 0.1 } } // ====================================================================== // DESCRIÇÃO DA CENA // MACROS QUE CONSTITUEM OS OBJETOS DA CENA #macro arvore(P, A, K) #local R_cilindro = 4*(K + 1); #if(K = 0) union{ cylinder{ <0, 0, 0>, <0, 0, A>, R_cilindro texture{ tx_verde } } sphere{ <0, 0, A>, 3*R_cilindro texture{ tx_azul } } translate P } #else #local arvore1 = object{ arvore(<0, 0, 0>, 4*R_cilindro, K - 1) } #local arvore2 = object{ arvore(<0, 0, 0>, 4*R_cilindro, K - 1) } #local arvore3 = object{ arvore(<0, 0, 0>, 4*R_cilindro, K - 1) } union{ cylinder{ <0, 0, 0>, <0, 0, A>, R_cilindro texture{ tx_verde } translate P //rotate rotacao*z } sphere{ <0, 0, A>, R_cilindro texture{ tx_verde } translate P //rotate rotacao*z } object{ arvore1 rotate 40*z rotate 30*x translate P + A*z } object{ arvore2 rotate 20*y translate P + A*z } object{ arvore3 rotate -40*z rotate -30*x translate P + A*z } } #end #end #macro plantacao(M, N, A, K) #declare roleta = seed(121092); #local P = <0, 0, 0>; #local i_arvore = 0; union{ #while(i_arvore < M) #local j_arvore = 0; #while(j_arvore < N) #if (rand(roleta) < 0.9) object{ arvore(P, A, K) translate <400*i_arvore, 400*j_arvore, 0>} #end #local j_arvore = j_arvore + 1; #end #local i_arvore = i_arvore + 1; #end } #end #include "eixos.inc" object{ eixos(10) } #declare K = 4; #declare A = 80; #declare M = 3; #declare N = 2; object{ plantacao(M, N, A, K) } #include "camlight.inc" #declare centro_cena = < M/2*400, N/2*400, 3.0*A>; #declare raio_cena = sqrt(M*M + N*N)*200; #declare dir_camera = < 100, 100, 100 >; #declare dist_camera = 5*raio_cena; #declare intens_luz = 1.20; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)