// ====================================================================== // MC937A/MO603A – Computacao Grafica - 2023-S2 // Trabalho de laboratorio 09 - 2023-11-29 // Poltrona para gamer // // RA108231 - Oscar dos Santos Esgalha Neto // ====================================================================== background{ color rgb < 0.7, 0.7, 0.9 > } #include "retalho.inc" #declare textura = texture{ pigment{ color rgb < 0.5, 0.9, 0.5 > } finish{ diffuse 0.8 ambient 0.1 } } #declare texturadbg = texture{ pigment{ color rgb < 0.8, 0.3, 0.3 > } finish{ diffuse 0.8 ambient 0.1 } } #macro meia_poltrona() #local encosto = array[4][4] { {<0, -2.2, 6>, <1, -2.2, 6>, <2, -2.2, 6>, <3, -2.2, 6>}, {<0, -2, 10>, <1, -2, 10>, <2, -2, 10>, <3, -2, 10>}, {<0, 1, 6>, <1, 1, 6>, <2, 1, 6>, <3, 1, 6>}, {<0, 0, 0>, <0, 0, 0>, <0, 0, 0>, <0, 0, 0>} }; #local assento = array[4][4] { {<0, 0, 0>, <0, 0, 0>, <0, 0, 0>, <0, 0, 0>}, {<0, 0, 0>, <1, 0, 0>, <2, 0, 0>, <3, 0, 0>}, {<0, 6, 4>, <1, 6, 4>, <2, 6, 4>, <3, 6, 4>}, {<0, 0, 0>, <0, 0, 0>, <0, 0, 0>, <0, 0, 0>} }; // Ligando sem quinas #local encosto[3][0] = (encosto[2][0] + assento[1][0]) / 2; #local assento[0][0] = encosto[3][0]; #local encosto[3][1] = (encosto[2][1] + assento[1][1]) / 2; #local assento[0][1] = encosto[3][0]; #local encosto[3][2] = (encosto[2][2] + assento[1][2]) / 2; #local assento[0][2] = encosto[3][2]; #local encosto[3][3] = (encosto[2][3] + assento[1][3]) / 2; #local assento[0][3] = encosto[3][3]; #local apoio_pes = array[4][4] { {<0, 0, 0>, <0, 0, 0>, <0, 0, 0>, <0, 0, 0>}, {<0, 6, -2>, <1, 6, -2>, <2, 6, -2>, <3, 6, -2>}, {<0, 6, -2>, <1, 6, -2>, <2, 6, -2>, <3, 6, -2>}, {<0, 8, -2>, <1, 8, -2>, <2, 8, -2>, <3, 8, -2>} }; #local assento[3][0] = (assento[2][0] + apoio_pes[1][0]) / 2; #local apoio_pes[0][0] = assento[3][0]; #local assento[3][1] = (assento[2][1] + apoio_pes[1][1]) / 2; #local apoio_pes[0][1] = assento[3][0]; #local assento[3][2] = (assento[2][2] + apoio_pes[1][2]) / 2; #local apoio_pes[0][2] = assento[3][2]; #local assento[3][3] = (assento[2][3] + apoio_pes[1][3]) / 2; #local apoio_pes[0][3] = assento[3][3]; #local braco = array[4][4] { {<-2, assento[0][0].y, 1>, <-1, assento[0][0].y, 4>, <0, 0, 0>, assento[0][0]}, {<-2, assento[1][0].y, 1>, <-1, assento[1][0].y, 4>, <0, 0, 0>, assento[1][0]}, {<-2, assento[2][0].y, 1>, <-1, assento[2][0].y, 4>, <0, 0, 0>, assento[2][0]}, {<-2, assento[3][0].y, 1>, <-1, assento[3][0].y, 4>, <0, 0, 0>, assento[3][0]} }; #local braco[0][2] = 2 * braco[0][3] - braco[0][1]; #local braco[1][2] = 2 * braco[1][3] - braco[1][1]; #local braco[2][2] = 2 * braco[2][3] - braco[2][1]; #local braco[3][2] = 2 * braco[3][3] - braco[3][1]; object { union { retalho(encosto, 0, texturadbg, textura, 0, 0, 1, 1) retalho(assento, 0, texturadbg, textura, 0, 0, 1, 1) retalho(apoio_pes, 0, texturadbg, textura, 0, 0, 1, 1) retalho(braco, 0, texturadbg, textura, 0, 0, 1, 1) } } #end #macro poltrona() union { object { meia_poltrona() } object { meia_poltrona() scale <-1, +1, +1> translate<4, 0, 0> } } #end object { poltrona() } #include "camlight.inc" #declare centro_cena = < 0, 0, 3.00 >; #declare raio_cena = 15.0; #declare dir_camera = < 1, 1, 1 >; #declare dist_camera = 5*raio_cena; #declare intens_luz = 1.20; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)