// Last edited on 2023-12-28 10:38:23 by stolfi // Raio da grade debug: // #declare rdb = 0.01; #declare rdb = 0; #include "retalho.inc" background{ color rgb < 0.950, 0.900, 0.850 > } #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 } } #macro meia_cadeira(altura, largura, inclinacao, c0,c1,c2) union { #declare C1 = array[4][4] { {<0, 0, 0>, , , }, {<0, largura * 0.1, altura * 0.5>, , , }, {<0, 0, altura * 0.6>, , , }, {<0, -largura * 0.5, altura * 0.5>, , , } }; retalho(C1, rdb, c0, 3) #declare C2 = array[4][4] { {C1[3][0], C1[3][1], C1[3][2], C1[3][3]}, {2 * C1[3][0] - C1[2][0], 2 * C1[3][1] - C1[2][1], 2 * C1[3][2] - C1[2][2], 2 * C1[3][3] - C1[2][3]}, {<0, -largura * 0.5 - inclinacao, altura * 0.8>, , , }, {<0, -largura * 0.5 - inclinacao, altura>, , , } }; // Encosto retalho(C2, rdb, c1, 3) #declare C3 = array[4][4] { {C1[0][0], 2 * C1[0][0] - C1[0][1], <0, -largura * 0.4, 0>, <0, -largura * 0.5, 0>}, {C1[1][0], 2 * C1[1][0] - C1[1][1], <0, -largura * 0.4, altura * 0.2>, <0, -largura * 0.5, altura * 0.2>}, {C1[2][0], 2 * C1[2][0] - C1[2][1], <0, -largura * 0.4, altura * 0.4>, <0, -largura * 0.5, altura * 0.4>}, {C1[3][0], 2 * C1[3][0] - C1[3][1], <0, -largura * 0.4, 0>, <0, -largura * 0.5, 0>} }; // Lateral retalho(C3, rdb, c2, 3) } #end #macro cadeira(altura, largura, inclinacao) union { object{ meia_cadeira(altura, largura, inclinacao, cret0,cret1,cret2) translate -0.00005*<3,4,7> rotate 0.01*<1,2,3> // Para evidenciar a sobreposiĆ§Ć£o -- Prof. } object{ meia_cadeira(altura, largura, inclinacao, cret3,cret4,cret5) scale <-1, 1, 1> translate } } #end #declare duas = true; #declare cmin = < -0.8, -4.5, -0.3 >; #declare cmax = < +1.6, +0.5, +3.3 >; #if (duas) #declare disp = < 1.0, +0.1, 0.0 >; #declare cmin = cmin - disp; #declare cmax = cmax + disp; object{ cadeira(2, 1.5, 1.0) translate -disp } object{ cadeira(3, 3.0, 2.0) translate +disp } #else object{ cadeira(3, 3.0, 2.0) } #end #include "eixos.inc" #if (rdb > 0) object{ eixos(2.0) } #end #include "gaiola.inc" #if (rdb > 0) object{ gaiola(cmin,cmax) } #end #if (rdb = 0) object{ gaipiso(cmin,cmax) } #end #declare centro_cena = (cmin + cmax)/2 + 1.5*y; #declare raio_cena = 0.50*vlength(cmax-cmin); #declare dist_camera = 7*raio_cena; #include "camlight.inc" #declare dir_camera = < -7, 5, 3 >; #declare intens_luz = 1.20; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)