// Last edited on 2023-12-30 10:46:06 by stolfi #version 3.7; global_settings { assumed_gamma 2.2 } #include "direcao_do_sol.inc" #include "parametros.inc" background{ color rgb < 0.75, 0.80, 0.85 > } #declare tx_base = texture{ pigment{ color rgb < 0.5, 0.30, 0.30 > } finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } } #declare tx_cinza = texture{ pigment{ color rgb < 0.3, 0.30, 0.30 > } finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } } #declare tx_painel = texture{ pigment{ color rgb<1,0,0> } finish { ambient 1 diffuse 0 } } #macro solar1(posicaoInicial) box{ posicaoInicial, posicaoInicial + <0.5,3,9> texture{ tx_painel } } #end #macro painel1(posicaoInicial) union{ box{ posicaoInicial, posicaoInicial + <2,5,12> texture{ tx_cinza } } object{ solar1(posicaoInicial + <-0.2,1,2>) } } #end #macro solar2(posicaoInicial) box{ posicaoInicial, posicaoInicial + <3,0.5,9> texture{ tx_painel } } #end #macro painel2(posicaoInicial) union{ box{ posicaoInicial, posicaoInicial + <5,2,12> texture{ tx_cinza } } object{ solar2(posicaoInicial + <1,-0.2,2>) } } #end #macro base() union{ box{ <0,0,0>, <25,25,4> texture{ tx_base } } box{ <3,3,4>, <22,22,8> texture{ tx_base } } } #end #macro templo() union{ object{ painel1(<18,10,8>) rotate 9*y } object{ painel1(<18,10,8>) rotate 9*y translate <-26,0,0> scale <-1,1,1>} object{ painel2(<9,18,8>) rotate -9*x } object{ painel2(<9,18,8>) rotate -9*x translate <0,-25,0> scale <1,-1,1>} object{ painel2(<9,18,8>) rotate -9*x rotate -23*z translate <0,3,0>} object{ painel2(<9,18,8>) rotate -9*x rotate 15*z translate <0,-28,0> scale <1,-1,1>} object{ base() } } #end object{ templo() } // object{ templo() translate < -12.5, -12.5, 0 > rotate 90*z translate < 12.5, 12.5, 0 > } #local dir_norte = < 0.0, cos(radians(lat)), sin(radians(lat)) >; #local dir_sol = direcao_do_sol(lat, lon, mes, hora); #include "eixos.inc" #local cmp_eixos = 30.0; // object{ eixos(cmp_eixos) } #declare cmin = < -1.0, -1.0, 0.0 >; #declare cmax = < +26.0, +26.0, +18.0 >; #declare centro_cena = (cmin + cmax)/2; #include "gaiola.inc" // object{ gaiola(cmin,cmax) } object{ gaichao(cmin,cmax) } #include "camsol.inc" #declare raio_cena = 0.65*vlength(cmax-cmin); #declare intens_luz = 1.20; // #declare vista = 3; camsol(centro_cena, raio_cena, vista, dir_norte, dir_sol, intens_luz)