// ====================================================================== // MC937A/MO603A – Computacao Grafica - 2023-S2 // Trabalho de laboratorio 01 - 2023-08-16 // Cadeira Ergologica // // RA108231 - Oscar dos Santos Esgalha Neto // ====================================================================== // ====================================================================== // Cores e texturas // ====================================================================== background{ color rgb < 0.75, 0.05, 0.75 > } #declare tx_madeira = texture{ pigment{ color rgb < 0.7, 0.4, 0.2 > } finish{ diffuse 0.8 ambient 0.1 reflection 0.05 } } #declare tx_acolchoado = texture{ pigment{ spotted turbulence 1 color_map { [0.00 color rgb < 0.7, 0.8, 0.6 >] [0.33 color rgb < 0.9, 0.9, 0.6 >] [0.66 color rgb < 1.0, 1.0, 0.6 >] [1.00 color rgb < 0.7, 0.8, 0.6 >] } } } #declare tx_xadrez = texture{ pigment{ checker color rgb < 0.9, 0.9, 0.9 >, color rgb < 1.00, 1.00, 1.00 > } finish{ diffuse 0.9 ambient 0.1 } scale 0.5 } // ====================================================================== // Constantes // ====================================================================== #declare raioPe = 0.4; #declare alturaPe = 2.0; #declare larguraAssento = 3; #declare comprimentoAssento = 4; #declare alturaAssento = 1; #declare comprimentoEncosto = 1; #declare alturaEncosto = 3; #declare buracoEncosto = 0.3; // ====================================================================== // Pecas da cadeira // ====================================================================== #declare peCilindro = cylinder{ < 0.00, 0.00, +0.00 >, < 0.00, 0.00, alturaPe >, raioPe texture{ tx_madeira } } #declare peCone = cone{ < 0.00, 0.00, +0.00 >, 0.1, < 0.00, 0.00, alturaPe >, raioPe texture{ tx_madeira } } #declare assento = box{ < -(comprimentoAssento / 2 + raioPe), -(larguraAssento / 2 + raioPe), alturaPe >, < (comprimentoAssento / 2 + raioPe), (larguraAssento / 2 + raioPe), alturaPe + alturaAssento > } #declare encosto = box{ < -(comprimentoAssento / 2 + raioPe), -(larguraAssento / 2 + raioPe), alturaPe + alturaAssento >, < -(comprimentoAssento / 2 + raioPe) + comprimentoEncosto, (larguraAssento / 2 + raioPe), alturaPe + alturaAssento + alturaEncosto > } #declare furoEncosto = sphere{ < 0.00, 0.00, 0.00 >, 0.35 } #declare almofada = sphere{ < 0.00, 0.00, 0.00 >, 0.4 } #declare chao = box{ <-20,-20,-1>, <+20,+20,0> } // ====================================================================== // Composicao do acolchoado // ====================================================================== #declare acolchoado = union { union { object{ assento } object{ almofada translate < -0.7, -1.2, 3 > } object{ almofada translate < -0.7, -0.4, 3 > } object{ almofada translate < -0.7, 0.4, 3 > } object{ almofada translate < -0.7, 1.2, 3 > } object{ almofada translate < 0.4, -1.2, 3 > } object{ almofada translate < 0.4, -0.4, 3 > } object{ almofada translate < 0.4, 0.4, 3 > } object{ almofada translate < 0.4, 1.2, 3 > } object{ almofada translate < 1.5, -1.2, 3 > } object{ almofada translate < 1.5, -0.4, 3 > } object{ almofada translate < 1.5, 0.4, 3 > } object{ almofada translate < 1.5, 1.2, 3 > } } difference { object{ encosto } union{ object{ furoEncosto translate < -1.4,-1.2 , 5.5 > } object{ furoEncosto translate < -1.4,-0.4 , 5.5 > } object{ furoEncosto translate < -1.4, 0.4 , 5.5 > } object{ furoEncosto translate < -1.4, 1.2 , 5.5 > } object{ furoEncosto translate < -1.4,-1.2 , 4.5 > } object{ furoEncosto translate < -1.4,-0.4 , 4.5 > } object{ furoEncosto translate < -1.4, 0.4 , 4.5 > } object{ furoEncosto translate < -1.4, 1.2 , 4.5 > } object{ furoEncosto translate < -1.4,-1.2 , 3.5 > } object{ furoEncosto translate < -1.4,-0.4 , 3.5 > } object{ furoEncosto translate < -1.4, 0.4 , 3.5 > } object{ furoEncosto translate < -1.4, 1.2 , 3.5 > } } } } // ====================================================================== // Composicao da cena e cadeira // ====================================================================== union{ object{ chao translate < 0,0,0 > texture{ tx_xadrez } } object{ peCilindro translate < 2, 1.5,0 > } object{ peCilindro translate < 2,-1.5,0 > } object{ peCone translate < -2, 1.5,0 > } object{ peCone translate < -2,-1.5,0 > } object { acolchoado texture{ tx_acolchoado } } } #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 3.00 >; #declare raio_cena = 6.5; #declare dir_camera = < 5.00, 3.00, 2.00 >; #declare dist_camera = 5*raio_cena; #declare intens_luz = 1.20; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)