// Last edited on 2023-12-30 10:14:11 by stolfi #version 3.7; global_settings { assumed_gamma 2.2 } #include "direcao_do_sol.inc" #include "parametros.inc" background{ color rgb < 0.710, 0.690, 0.670 > } #declare tx_fosca = texture{ pigment{ color rgb < 0.00, 0.50, 0.90 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_base_0 = texture{ pigment{ color rgb < 1.00, 1.0, 1.0 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_base_1 = texture{ pigment{ color rgb < 1.00, 0, 0 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_base_2 = texture{ pigment{ color rgb < 0, 1.0, 0 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_base_preta = texture{ pigment{ color rgb < 0, 0, 0 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_painel = texture { pigment{ color rgb <1,0,0> } finish{ ambient 0.8 diffuse 0.2 } } #macro face(tamanho) union { object{box { <0, 0, 0>, texture{tx_base_0} rotate<0, 45, 0> } } } #end #macro painel(tamanho) union { object{box { <0, 0, 0>, texture{tx_painel} rotate<0, 45, 0> translate <0.2121* tamanho, 0, 0.135 * tamanho> } } } #end #macro principal(tamanho) union { difference { union { object{face(tamanho) translate <0.707* tamanho, -2 * tamanho, 0>} object{face(tamanho) translate <0.707 * tamanho, -2 * tamanho, 0> rotate <0, 0, 90>} object{face(tamanho) translate <0.707 * tamanho, -2 * tamanho, 0> rotate <0, 0, 180>} object{face(tamanho) translate <0.707 * tamanho, -2 * tamanho, 0> rotate <0, 0, 270>} } union { object{face(tamanho * 2) translate <1.1242 * tamanho, -2 * tamanho, 0>} object{face(tamanho * 2) translate <1.1242 * tamanho, -2 * tamanho, 0> rotate <0, 0, 90>} object{face(tamanho * 2) translate <1.1242 * tamanho, -2 * tamanho, 0> rotate <0, 0, 180>} object{face(tamanho * 2) translate <1.1242 * tamanho, -2 * tamanho, 0> rotate <0, 0, 270>} } } union { object{painel(tamanho) translate <0.707* tamanho, -0.5 * tamanho, 0>} object{painel(tamanho) translate <0.707 * tamanho, -0.5 * tamanho, 0> rotate <0, 0, 90>} object{painel(tamanho) translate <0.707 * tamanho, -0.5 * tamanho, 0> rotate <0, 0, 180>} object{painel(tamanho) translate <0.707 * tamanho, -0.5 * tamanho, 0> rotate <0, 0, 270>} } } #end #macro teto(tamanho) union { box { <0, 0, 0>, texture{ tx_base_0} rotate<0, 20, 0> } box { <0, 0, tamanho * 0.3>, texture{tx_painel} rotate<0, 20, 0> } difference { box { <0, 0, 0>, texture{tx_base_0} } box { <0, 0, 0>, texture{tx_base_0} rotate<0, 20, 0> } } } #end #macro painel_chao(tamanho) union { box { <0, 0, 0>, texture{tx_base_0} rotate<0, 10, 0> } box { <0, 0, tamanho * 0.5>, texture{tx_painel} rotate<0, 10, 0> } } #end #macro chao(tamanho) box { <-tamanho * 2.5, -tamanho * 2.5, 0>, texture{tx_base_0} } #end #macro templo(tamanho) union { object{principal(tamanho) translate <0, 0, tamanho * 1.36>} object{chao(tamanho)} object{teto(tamanho) translate<-tamanho * 0.8, -tamanho * 0.8, tamanho * 1.8>} object{painel_chao(tamanho) translate} } #end object { templo(1) } // object { principal(1) translate 1*z } #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 = 5.0; // object{ eixos(cmp_eixos) } #declare cmin = < -3.0, -2.7, 00.0 >; #declare cmax = < +5.0, +2.7, +2.5 >; #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)