// Last edited on 2023-12-28 00:12:57 by stolfi // Raio da grade debug: // #declare rdb = 0.020; #declare rdb = 0; background{ color rgb < 0.75, 0.80, 0.95 > } #declare tx_xadrez = texture{ pigment{ checker color rgb < 0.00, 0.00, 0.00 >, color rgb < 1.00, 1.00, 1.0 > } finish{ diffuse 0.9 ambient 0.1 } scale 2.0 } #include "retalho.inc" #macro poltrona() union{ #local P_pes = array[4][4]; #local P_corpo = array[4][4]; #local P_braco = array[4][4]; #local P_pes[1][0] = <5.2,0,-1>; #local P_pes[1][1] = <5.2,1,-1>; #local P_pes[1][2] = <5.2,2,-1>; #local P_pes[1][3] = <5.2,3,-1>; #local P_pes[2][0] = <5.7,0,2>; #local P_pes[2][1] = <5.7,1,2>; #local P_pes[2][2] = <5.7,2,2>; #local P_pes[2][3] = <5.7,3,2>; #local P_pes[3][0] = <6,0,0>; #local P_pes[3][1] = <6,1,0>; #local P_pes[3][2] = <6,2,0>; #local P_pes[3][3] = <6,3,0>; #local P_corpo[1][0] = <3,0,3>; #local P_corpo[1][1] = <3,1,3>; #local P_corpo[1][2] = <3,2,3>; #local P_corpo[1][3] = <3,3,3>; #local P_corpo[2][0] = <1.5,0,-1.25>; #local P_corpo[2][1] = <1.5,1,-1.25>; #local P_corpo[2][2] = <1.5,2,-1.25>; //#local P_corpo[2][3] = <1.5,3,-1.25>; #local P_corpo[3][0] = <0,0,5>; #local P_corpo[3][1] = <0,1,5>; #local P_corpo[3][2] = <0,2,5>; //#local P_corpo[3][3] = <0,3,5>; #local P_braco[0][0] = <4.1,4,0>; #local P_braco[0][1] = <4.1,3.67,4>; #local P_braco[0][2] = <4.1,3.33,4>; #local P_braco[1][0] = <2,4,0>; #local P_braco[1][1] = <2,3.67,4>; #local P_braco[1][2] = <2,3.33,4>; #local P_braco[2][0] = <1,4,0>; #local P_braco[2][1] = <1,3.67,4>; #local P_braco[2][2] = <1,3.33,4>; #local P_braco[3][0] = <0.5,4,0>; #local P_braco[3][1] = <0.5,3.67,4>; #local P_braco[3][2] = <0.5,3.33,4>; #local media00corpo_pe = (P_pes[1][0]+P_corpo[1][0])/2; #local media01corpo_pe = (P_pes[1][1]+P_corpo[1][1])/2; #local media02corpo_pe = (P_pes[1][2]+P_corpo[1][2])/2; #local media03corpo_pe = (P_pes[1][3]+P_corpo[1][3])/2; #local P_corpo[0][0] = media00corpo_pe; #local P_corpo[0][1] = media01corpo_pe; #local P_corpo[0][2] = media02corpo_pe; #local P_corpo[0][3] = media03corpo_pe; #local P_pes[0][0] = P_corpo[0][0]; #local P_pes[0][1] = P_corpo[0][1]; #local P_pes[0][2] = P_corpo[0][2]; #local P_pes[0][3] = P_corpo[0][3]; //#local B[0][0] = A[0][3]; //para emendar o A[0][3] == B[0][0], A[1][3] == B[1][0] ... //#local media00corpo_braco = (P_braco[0][2]+P_corpo[0][2])/2; #local media01corpo_braco = (P_braco[1][2]+P_corpo[1][2])/2; #local media02corpo_braco = (P_braco[2][2]+P_corpo[2][2])/2; #local media03corpo_braco = (P_braco[3][2]+P_corpo[3][2])/2; //#local P_corpo[0][3] = media00corpo_braco; #local P_corpo[1][3] = media01corpo_braco; #local P_corpo[2][3] = media02corpo_braco; #local P_corpo[3][3] = media03corpo_braco; #local P_braco[0][2] = 2*(P_corpo[0][3]) - P_corpo[0][2]; #local P_pes[1][3] = 2*(P_corpo[0][3]) - P_corpo[1][3]; #local P_braco[0][3] = P_corpo[0][3]; #local P_braco[1][3] = P_corpo[1][3]; #local P_braco[2][3] = P_corpo[2][3]; #local P_braco[3][3] = P_corpo[3][3]; object{retalho(P_corpo, rdb, cret0, 3)} object{retalho(P_pes, rdb, cret1, 3)} object{retalho(P_braco, rdb, cret2, 3)} } #end #macro poltrona_completa() union{ object{poltrona()} object{poltrona() scale <+1,-1,+1>} } #end #declare cmin = < -1, -5, -2 >; #declare cmax = < +7, +5, +6 >; object{ poltrona_completa() } #include "eixos.inc" // #if (rdb > 0) object{ eixos(5.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.55*vlength(cmax-cmin); #declare dist_camera = 7*raio_cena; #include "camlight.inc" #declare dir_camera = < 5, -7, 3 >; #declare intens_luz = 1.20; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)