background{ color rgb < 0.75, 0.80, 0.85 > } #include "eixos.inc" #include "retalho.inc" #declare tx = texture{ pigment{ color rgb < 0.5, 0, 0 > } finish{ diffuse 0.9 ambient 0.1 } } #macro perna() #local p = array[4][4]; #local p[1][0] = <4,0,2>; #local p[1][1] = <4,1,2>; #local p[1][2] = <4,2,2>; #local p[1][3] = <4,3,2>; #local p[2][0] = <5,0,0>; #local p[2][1] = <5,1,0>; #local p[2][2] = <5,2,0>; #local p[2][3] = <5,3,0>; #local p[3][0] = <6,0,1>; #local p[3][1] = <6,1,1>; #local p[3][2] = <6,2,1>; #local p[3][3] = <6,3,1>; p #end #macro assento() #local p = array[4][4]; #local p[1][0] = <1,0,1>; #local p[1][1] = <1,1,1>; #local p[1][2] = <1,2,1>; #local p[1][3] = <1,3,1>; #local p[2][0] = <2,0,2>; #local p[2][1] = <2,1,2>; #local p[2][2] = <2,2,2>; #local p[2][3] = <2,3,2>; p #end #macro encosto() #local p = array[4][4]; #local p[1][0] = <0,0,4>; #local p[1][1] = <0,1,4>; #local p[1][2] = <0,2,4>; #local p[1][3] = <0,3,4>; #local p[2][0] = <0,0,3>; #local p[2][1] = <0,1,3>; #local p[2][2] = <0,2,3>; #local p[2][3] = <0,3,3>; p #end #macro cabeca() #local p = array[4][4]; #local p[0][0] = <0,0,5>; #local p[0][1] = <0,1,5>; #local p[0][2] = <0,2,5>; #local p[0][3] = <0,3,5>; #local p[1][0] = <1,0,5>; #local p[1][1] = <1,1,5>; #local p[1][2] = <1,2,5>; #local p[1][3] = <1,3,5>; #local p[2][0] = <0,0,4>; #local p[2][1] = <0,1,4>; #local p[2][2] = <0,2,4>; #local p[2][3] = <0,3,4>; p #end #macro braco() #local p = array[4][4]; #local p[0][0] = <0,-3,3>; #local p[0][1] = <1,-3,3>; #local p[0][2] = <2,-3,3>; #local p[0][3] = <3,-3,3>; #local p[1][0] = <0,-2,4>; #local p[1][1] = <1,-2,4>; #local p[1][2] = <2,-2,4>; #local p[1][3] = <3,-2,4>; #local p[2][0] = <0,-1,1>; #local p[2][1] = <1,-1,1>; #local p[2][2] = <2,-1,1>; #local p[2][3] = <3,-1,1>; p #end #macro junta_pontas(p1, p2) #declare p1[0][0] = (p1[1][0] + p2[2][0])/2; #declare p1[0][1] = (p1[1][1] + p2[2][1])/2; #declare p1[0][2] = (p1[1][2] + p2[2][2])/2; #declare p1[0][3] = (p1[1][3] + p2[2][3])/2; #declare p2[3][0] = (p1[1][0] + p2[2][0])/2; #declare p2[3][1] = (p1[1][1] + p2[2][1])/2; #declare p2[3][2] = (p1[1][2] + p2[2][2])/2; #declare p2[3][3] = (p1[1][3] + p2[2][3])/2; #end #macro junta_braco(p_ass, p_bra, p_per, p_enc) #declare p_ass[0][0] = (p_ass[0][1] + p_ass[1][0] + p_bra[2][0] + p_enc[2][0])/4; #declare p_ass[1][0] = (p_ass[1][1] + p_bra[2][1])/2; #declare p_ass[2][0] = (p_ass[2][1] + p_bra[2][2])/2; #declare p_ass[3][0] = (p_ass[1][3] + p_ass[3][1] + p_bra[2][3] + p_per[1][0])/4; #declare p_bra[3][0] = (p_ass[0][1] + p_ass[1][0] + p_bra[2][0] + p_enc[2][0])/4; #declare p_bra[3][1] = (p_ass[1][1] + p_bra[2][1])/2; #declare p_bra[3][2] = (p_ass[2][1] + p_bra[2][2])/2; #declare p_bra[3][3] = (p_ass[1][3] + p_ass[3][1] + p_bra[2][3] + p_per[1][0])/4; #declare p_enc[3][0] = (p_ass[0][1] + p_ass[1][0] + p_bra[2][0] + p_enc[2][0])/4; #declare p_per[0][0] = (p_ass[1][3] + p_ass[3][1] + p_bra[2][3] + p_per[1][0])/4; #end #macro poltrona() #local p1 = perna(); #local p2 = assento(); junta_pontas(p1, p2); #local p_per = p1; #local p1 = p2; #local p2 = encosto(); junta_pontas(p1, p2); #local p_ass = p1; #local p1 = p2; #local p2 = cabeca(); junta_pontas(p1, p2); #local p_enc = p1; #local p_cab = p2; #local p_bra = braco(); junta_braco(p_ass, p_bra, p_per, p_enc); #local per = retalho(p_per,0,tx,tx,0,0,1,1); #local ass = retalho(p_ass,0,tx,tx,0,0,1,1); #local enc = retalho(p_enc,0,tx,tx,0,0,1,1); #local cab = retalho(p_cab,0,tx,tx,0,0,1,1); #local bra = retalho(p_bra,0,tx,tx,0,0,1,1); union { object { per } object { ass } object { enc } object { cab } object { bra } } #end union { object { poltrona() } object { poltrona() scale <0, -1, 0> translate <0, 6, 0>} } #include "camlight.inc" #declare centro_cena = < 0.00, 1.00, 1.00 >; #declare raio_cena = 10.0; #declare dir_camera = < 40.00, 70.00, 20.00 >; #declare dist_camera = 20*raio_cena; #declare intens_luz = 1.20; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)