// Last edited on 2023-12-28 17:14:03 by stolfi // Raio da grade debug: // #declare rdb = 0.2; #declare rdb = 0; #include "retalho.inc" background{ color rgb < 0.75, 0.80, 0.85 > } #declare tx_robo = texture { pigment { color rgb <0.8, 0.8, 0.8> } // Adjust the color as needed finish { ambient 0.1 diffuse 0.9 specular 1.0 metallic 1.0 } } #macro assento(altura, largura) #local p = array[4][4]; #local p[0][0] = <0,0,5>; #local p[0][1] = <0,10,5>; #local p[0][2] = <0,20,5>; #local p[0][3] = <0,30,5>; #local p[1][0] = <10,0,5>; #local p[1][1] = <10,10,5>; #local p[1][2] = <10,20,5>; #local p[1][3] = <10,30,5>; #local p[2][0] = <20,0,5>; #local p[2][1] = <20,10,5>; #local p[2][2] = <20,20,5>; #local p[2][3] = <20,30,5>; #local p[3][0] = <30,0,0>; #local p[3][1] = <30,10,0>; #local p[3][2] = <30,20,0>; #local p[3][3] = <30,30,0>; object {retalho(p, rdb, cret0, 3)} #end #macro encosto() #local p = array[4][4]; #local p[0][0] = <0,0,5>; #local p[0][1] = <0,10,5>; #local p[0][2] = <0,20,5>; #local p[0][3] = <0,30,5>; #local p[1][0] = <-10,0,5>; #local p[1][1] = <-10,10,5>; #local p[1][2] = <-10,20,5>; #local p[1][3] = <-10,30,5>; #local p[2][0] = <-10,0,30>; #local p[2][1] = <-10,10,30>; #local p[2][2] = <-10,20,30>; #local p[2][3] = <-10,30,30>; #local p[3][0] = <-20,0,30>; #local p[3][1] = <-20,10,30>; #local p[3][2] = <-20,20,30>; #local p[3][3] = <-20,30,30>; object {retalho(p, rdb, cret1, 3)} #end #macro costas_braco() #local p = array[4][4]; #local p[0][0] = <0,-12,15>; #local p[0][1] = <10,-12,15>; #local p[0][2] = <20,-12,15>; #local p[0][3] = <30,-12,15>; #local p[1][0] = <0,-16,17>; #local p[1][1] = <10,-16,17>; #local p[1][2] = <20,-16,17>; #local p[1][3] = <30,-16,17>; #local p[2][0] = <0,-18,15>; #local p[2][1] = <10,-18,15>; #local p[2][2] = <20,-18,15>; #local p[2][3] = <30,-18,15>; #local p[3][0] = <0,-16,0>; #local p[3][1] = <10,-16,0>; #local p[3][2] = <20,-16,0>; #local p[3][3] = <30,-16,0>; object {retalho(p, rdb, cret2, 3)} #end #macro braco() #local p = array[4][4]; #local p[0][0] = <0,0,5>; #local p[0][1] = <10,0,5>; #local p[0][2] = <20,0,5>; #local p[0][3] = <30,0,0>; #local p[1][0] = <0,-4,5>; #local p[1][1] = <10,-4,6>; #local p[1][2] = <20,-4,6>; #local p[1][3] = <30,-4,5>; #local p[2][0] = <0,-8,10>; #local p[2][1] = <10,-8,12>; #local p[2][2] = <20,-8,12>; #local p[2][3] = <30,-8,10>; #local p[3][0] = <0,-12,15>; #local p[3][1] = <10,-12,15>; #local p[3][2] = <20,-12,15>; #local p[3][3] = <30,-12,15>; union { object { retalho(p, rdb, cret3, 3) } object { costas_braco() } } #end #macro apoio_pes() #local p = array[4][4]; #local p[0][0] = <30,0,0>; #local p[0][1] = <30,10,0>; #local p[0][2] = <30,20,0>; #local p[0][3] = <30,30,0>; #local p[1][0] = <35,0,-4>; #local p[1][1] = <35,10,-4>; #local p[1][2] = <35,20,-4>; #local p[1][3] = <35,30,-4>; #local p[2][0] = <40,0,-10>; #local p[2][1] = <40,10,-10>; #local p[2][2] = <40,20,-10>; #local p[2][3] = <40,30,-10>; #local p[3][0] = <50,0,-15>; #local p[3][1] = <50,10,-15>; #local p[3][2] = <50,20,-15>; #local p[3][3] = <50,30,-15>; object {retalho(p, rdb, cret4, 3)} #end #macro apoio_pes_fim() #local p = array[4][4]; #local p[0][0] = <50,0,-15>; #local p[0][1] = <50,10,-15>; #local p[0][2] = <50,20,-15>; #local p[0][3] = <50,30,-15>; #local p[1][0] = <55,0,-15>; #local p[1][1] = <55,10,-15>; #local p[1][2] = <55,20,-15>; #local p[1][3] = <55,30,-15>; #local p[2][0] = <60,0,-5>; #local p[2][1] = <60,10,-5>; #local p[2][2] = <60,20,-5>; #local p[2][3] = <60,30,-5>; #local p[3][0] = <50,0,-5>; #local p[3][1] = <50,10,-5>; #local p[3][2] = <50,20,-5>; #local p[3][3] = <50,30,-5>; object {retalho(p, rdb, cret5, 3)} #end #macro cadeira(altura, largura, inclinacao) union { object { assento(altura, largura) } object { braco() } object { braco() scale <1, -1, 1> translate 30*y } object { encosto() } object { apoio_pes() } object { apoio_pes_fim() } object { cylinder { <0, 0, -10>, <0, 0, 10>, 3 } translate <20,20,-10> texture { tx_robo } } } #end #declare duas = true; #declare cmin = < -25, -25, -20 >; #declare cmax = < +65, +55, +35 >; #if (duas) #declare disp = < 0, 40, 0>; #declare cmin = cmin - disp; #declare cmax = cmax + disp; object{ cadeira(1, 2, 3) translate -disp } object{ cadeira(4, 5, 6) translate +disp } #else object{ cadeira(1, 1, 1) } #end #include "eixos.inc" #if (rdb > 0) object{ eixos(30.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; #declare raio_cena = 0.65*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)