/* MC930 - 2o. sem 2000 - Prof. Jorge Stolfi * * Trabalho Prático: "Interior do Bandejão" * * by Paulo Eduardo Ferreira de Castro - RA 971379 * */ /* chão */ plane { y, 0 texture { pigment { color rgb <0,0,0> } } } /* largura -> eixo Z comprimento -> eixo X altura -> eixo Y */ #declare corParede = <1, 1, 1>; #declare largMesa = 1; #declare compMesa = 4; #declare espMesa = .04; /* espessura */ #declare altMesa = 1; /* distancia da mesa ao chao */ #declare entreMesasX = 2; #declare entreMesasZ = 1.5; #declare ladoBanco = .35; /* quadrado */ #declare espBanco = .03; #declare altBanco = .5; #declare entreBancos = compMesa/5; #declare raioSuporte = .04; #declare numMesasX = 10; #declare numMesasZ = 10; #declare distMesa_ParedeX = 1; #declare distMesa_ParedeZ = 5; #declare compTodasMesas = numMesasX * (compMesa+entreMesasX) - entreMesasX; #declare largTodasMesas = numMesasZ * (largMesa+entreMesasZ) - entreMesasZ; #declare compBandejao = compTodasMesas + 2 * distMesa_ParedeX; #declare largBandejao1 = largTodasMesas + distMesa_ParedeZ + 2; #declare altBandejao = 15; #declare mesa = box { <-compMesa/2, altMesa, -largMesa/2>, pigment { color rgb < 1, 1, .8 > } } #declare banco = box { <-ladoBanco/2, altBanco, -ladoBanco/2>, pigment { color rgb < 1, 1, .8 > } } #declare suporteBanco = union { cylinder { <0, raioSuporte, 0>, <0, altBanco, 0>, raioSuporte } cylinder { <0, raioSuporte, 0>, <0, altMesa, largMesa/2 + ladoBanco/2>, raioSuporte } sphere { <0, raioSuporte, 0>, raioSuporte } pigment { color rgb < .976, .686, .4 > } } #declare bancoComSuporte1 = union { object { banco } object { suporteBanco } } #declare bancoComSuporte2 = union { object { banco } object { suporteBanco scale <1, 1, -1> } } #declare mesaCompleta = union { object { mesa } object { bancoComSuporte1 translate <-compMesa/2 + entreBancos, 0, -largMesa/2 - ladoBanco/2> } object { bancoComSuporte1 translate <-compMesa/2 + 2*entreBancos, 0, -largMesa/2 - ladoBanco/2> } object { bancoComSuporte1 translate <-compMesa/2 + 3*entreBancos, 0, -largMesa/2 - ladoBanco/2> } object { bancoComSuporte1 translate <-compMesa/2 + 4*entreBancos, 0, -largMesa/2 - ladoBanco/2> } object { bancoComSuporte2 translate <-compMesa/2 + entreBancos, 0, largMesa/2 + ladoBanco/2> } object { bancoComSuporte2 translate <-compMesa/2 + 2*entreBancos, 0, largMesa/2 + ladoBanco/2> } object { bancoComSuporte2 translate <-compMesa/2 + 3*entreBancos, 0, largMesa/2 + ladoBanco/2> } object { bancoComSuporte2 translate <-compMesa/2 + 4*entreBancos, 0, largMesa/2 + ladoBanco/2> } } /* constantes da Casa de Lavagem de Bandejas (LB) */ #declare compLB = 10; #declare largLB = 6; #declare altLB = 4; #declare raioColunaLB = 1; #declare distLB_ParedeX = 5; #declare casaLavaBandeja = union { cylinder { <-(compLB/2-raioColunaLB), 0, -(largLB/2-raioColunaLB)>, <-(compLB/2-1), altLB, -(largLB/2-raioColunaLB)>, raioColunaLB } cylinder { <-(compLB/2-raioColunaLB), 0, (largLB/2-raioColunaLB)>, <-(compLB/2-raioColunaLB), altLB, (largLB/2-raioColunaLB)>, raioColunaLB } cylinder { <(compLB/2-raioColunaLB), 0, (largLB/2-raioColunaLB)>, <(compLB/2-raioColunaLB), altLB, (largLB/2-raioColunaLB)>, raioColunaLB } cylinder { <(compLB/2-raioColunaLB), 0, -(largLB/2-raioColunaLB)>, <(compLB/2-raioColunaLB), altLB, -(largLB/2-raioColunaLB)>, raioColunaLB } box { <-(compLB/2-raioColunaLB), 0, -largLB/2>, <(compLB/2-raioColunaLB), altLB, largLB/2> } box { <-compLB/2, 0, -(largLB/2-raioColunaLB)>, <-(compLB/2-raioColunaLB), altLB, (largLB/2-raioColunaLB)> } box { , } pigment { color rgb corParede } } /* rampa */ #declare compRampa = 10; #declare largRampa = 1.5; #declare altRampa = 6; #declare espRampa = .3; /* espessura das paredes e chao da rampa */ #declare compPatamar = 3; /* patamar que une as duas rampas */ #declare compRampaCompleta = 2 * compRampa + compPatamar; #declare rampa = box { <-sqrt(pow(altRampa,2) + pow(compRampa,2))/2, -espRampa/2, -largRampa/2>, rotate <0, 0, degrees(atan2(altRampa, compRampa))> } #declare rampaCompleta = union { box { <-compPatamar/2, -espRampa/2, -largRampa/2> translate <0, altRampa, 0> } object { rampa scale <-1, 1, 1> translate } object { rampa translate <-compRampa/2 - compPatamar/2, altRampa/2, 0> } pigment { color rgb corParede } } /* desenha mesas */ #declare imesax=distMesa_ParedeX; #while (imesax < compTodasMesas ) #declare imesaz=distMesa_ParedeZ; #while (imesaz < largTodasMesas ) object { mesaCompleta translate } #declare imesaz = imesaz+largMesa+entreMesasZ; #end #declare imesax = imesax+compMesa+entreMesasX; #end object { casaLavaBandeja translate } object { casaLavaBandeja translate } object { rampaCompleta translate } background { color rgb <.5,.8,1> } light_source { < 0, 10, 0 > color rgb < 1, 1, 1 > } light_source { < 0, 10, 25> color rgb < 1, 1, 1 > } light_source { < 60, 10, 25 > color rgb < 1, 1, 1 > } light_source { < 60, 10, 0 > color rgb < 1, 1, 1 > } light_source { < 30, 10, 12 > color rgb < 1, 1, 1 > } camera { location look_at sky <0,1,0> }