//TP03 - Arvore de dinheiro //Aluno: Sergio José Venancio Júnior //RA: 009884 // ====================================================================== // CONSTANTES - configuracoes que determinam //raio da moeda #declare raio_moeda = 1; //raio e altura do tronco inicial #declare raio_inicial = 3; #declare altura_inicial = 20; //proporcoes sob as quais o raio e a altura do tronco se dividem nas recursões #declare prop_tronco = 0.55; #declare prop_altura = 0.8; // ====================================================================== // CORES E TEXTURAS background{ color rgb < 0.75, 0.80, 0.85 > } #declare tx_tronco_arvore = texture{ pigment{ color rgb < 0.5, 0.3, 0 > } finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } } #declare tx_moeda = texture{ pigment{ color rgb < 1, 1, 0 > } finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } } #declare tx_grama = texture{ pigment{ color rgb < 0.10, 0.32, 0.05 > } finish{ diffuse 0.9 ambient 0.1 } } // ====================================================================== // DESCRIÇÃO DA CENA #declare chao = box{ <-100,-100,-1>, <+100,+100,0> } //funcao que cria moeda #macro criaMoeda() union{ //cilindro que representa tronco cylinder{ < 0, 0, 0 >, < 0, 0, 0.3 >, raio_moeda texture{ tx_moeda} } } #end //cria tronco #macro criaTronco(_raio, _altura) union { //cilindro que representa tronco cylinder{ < 0, 0, 0 >, < 0, 0, _altura >, _raio texture{ tx_tronco_arvore} } //junta do tronco sphere{ < 0,0, _altura >, _raio texture{ tx_tronco_arvore} } } #end //funcao recursiva para criar árvore #macro criaArvore(_raio, _altura) //criterio de parada eh um raio visivel para a configuracao da camera #if (_raio < 0.1) union { object{ criaTronco(_raio,_altura) } object{ criaMoeda() translate <0,0, _altura> } } #else union { object{ criaTronco(_raio,_altura) } object{ criaArvore(_raio * prop_tronco, _altura * prop_altura) rotate <-30,0,0> translate <0,0,_altura > } object{ criaArvore(_raio * prop_tronco, _altura * prop_altura) rotate <-30,0,-120> translate <0,0,_altura > } object{ criaArvore(_raio * prop_tronco, _altura * prop_altura) rotate <-30,0,+120> translate <0,0,_altura > } } #end #end #include "eixos.inc" // ================================================================= // MONTAGEM DA CENA union{ object{ eixos(3.00) } object{ chao translate < 0,0,0 > texture{ tx_grama } } object{ criaArvore(raio_inicial,altura_inicial) } } // ================================================================= // POSICIONAMENTO DA CAMERA #include "camlight.inc" #declare centro_cena = < 0, 0, 40 >; #declare raio_cena = 120; #declare dir_camera = < 14, 14, 0 >; #declare dist_camera = 60; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)