/* MC930 - 2o. sem 2000 - Prof. Jorge Stolfi * * Trabalho Prático: "Interior do Bandejão" * * by Paulo Eduardo Ferreira de Castro - RA 971379 * */ #include "textures.inc" /* chão */ plane { y, 0 texture { pigment { color rgb <.6,.6,.6> } } } /* largura -> eixo Z comprimento -> eixo X altura -> eixo Y */ /* mesas */ #declare largMesa = 1; #declare compMesa = 3.5; #declare espMesa = .04; /* espessura */ #declare altMesa = .8; /* distancia da mesa ao chao */ #declare entreMesasX = 1.2; #declare entreMesasZ = 1.2; #declare entreMesasJuntas = .1; #declare ladoBanco = .35; /* quadrado */ #declare espBanco = .03; #declare altBanco = .44; #declare entreBancos = compMesa/5; #declare raioSuporte = .04; #declare numMesasX = 12; #declare numMesasZ = 6; #declare distMesa_ParedeX = 1; #declare distMesa_ParedeZ = 5; #declare compTodasMesas = numMesasX * (compMesa+entreMesasX/2+entreMesasJuntas/2) - entreMesasX; #declare largTodasMesas = numMesasZ * (largMesa+entreMesasZ) - entreMesasZ; /* bandejao total */ #declare compBandejao = compTodasMesas + 2 * distMesa_ParedeX; #declare largBandejao1 = largTodasMesas + distMesa_ParedeZ + 2; #declare altBandejao = 6; /* nao inclui o teto */ /* bilheteria (casa de venda de tickets) */ #declare compBilheteria=6; #declare largBilheteria=6; #declare altBilheteria=altBandejao; #declare compHallRoletas=4; #declare largHallRoletas=6; /* casa da nutricionista (administracao) */ #declare compCasaNutrDentro=3; // interior do bandejao #declare compCasaNutrFora=6; // exterior do bandejao #declare largCasaNutr=6; /* casa de lavagem de bandejas (LB) */ #declare compLB = 14; #declare largLB = 6; #declare altLB = 5; #declare raioColunaLB = 1; /* rampa */ #declare compRampa = 8; #declare largRampa = 1.5; #declare altRampa = 3; #declare hipotenusaRampa=sqrt(pow(altRampa,2) + pow(compRampa,2))/2; #declare altMurinho = 1; #declare espMurinho = .2; #declare espPiso = .3; /* espessura do piso da rampa e plataforma */ #declare compHallRampas = 3; /* piso que une as duas rampas, no alto */ #declare compRampaCompleta = 2 * compRampa + compHallRampas; #declare posXRampaCompleta=compBandejao - compRampaCompleta/2 - compCasaNutrDentro - 1.2*largRampa; #declare posZRampaCompleta=largBandejao1 + 3.5*largRampa; /* paredes */ #declare espParede = .25; #declare altParede = 2; /* janelas */ #declare largJanela=1; #declare altJanela=1; #declare espJanela=.001; #declare altTodasJanelas=altBandejao-altParede; #declare altHaste=altTodasJanelas; #declare largHaste=.05; #declare espHaste=.01; /* cores */ #declare corParede = <1, 1, 1>; #declare corMurinho=<1, .8, .7>; #declare corPisoRampa=corMurinho; #declare corBilheteria=corMurinho; #declare corCasaNutr=<.8, 1, .8>; #declare corCasaLB=<.8, .8, 1>; /* ---------------------------------------------------- */ /* mesas */ #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> } } /* casa de lavagem de bandejas (LB) */ #declare distLB_ParedeX = 6; #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 corCasaLB } } /* rampa */ #declare meioCilindro= difference { cylinder { <0, 0, -.5>, <0, 0, .5>, 1 } box { <-2, -2, -2>, <2, 0, 2> } } #declare rampa = difference { union { box { // piso <-hipotenusaRampa, -espPiso/2, -largRampa/2>, scale <1.1, 1, 1> pigment { color rgb corPisoRampa } } box { // murinho <-hipotenusaRampa, espPiso/2, -largRampa/2>, pigment { color rgb corMurinho } } box { // murinho <-hipotenusaRampa, espPiso/2, largRampa/2-espMurinho>, pigment { color rgb corMurinho } } object { meioCilindro scale translate pigment { color rgb corMurinho } } object { meioCilindro scale translate pigment { color rgb corMurinho } } rotate <0, 0, degrees(atan2(altRampa, compRampa))> } box { <-compRampa/2, -altRampa, -largRampa>, <-compRampa, 0, largRampa> pigment { color rgb corMurinho } } box { , pigment { color rgb corMurinho } } } #declare rampaCompleta = union { box { <-compHallRampas/2, -espPiso/2, -largRampa/2>, translate <0, altRampa, 0> pigment { color rgb corPisoRampa } } object { rampa scale <-1, 1, 1> translate } object { rampa translate <-compRampa/2 - compHallRampas/2, altRampa/2, 0> } // pigment { color rgb corParede } } /* Bilheteria */ #declare bilheteria= box { <-espParede/2, 0, largBandejao1>, pigment { color corBilheteria } } #declare plataformaSuperior= union { box { // piso para o lado da bilheteria (mais largo) , pigment { color rgb corPisoRampa } } box { // piso para o lado da rampa , pigment { color rgb corPisoRampa } } box { // murinho ao longo de x para o lado das mesas , pigment { color rgb corMurinho } } box { // murinho ao longo de x para o lado das rampas , pigment { color rgb corMurinho } } box { // murinho ao longo de z para o lado das rampas , pigment { color rgb corMurinho } } } /* Casa da Nutricionista (CN) */ #declare casaNutr = box { , pigment { color rgb corCasaNutr } } /* paredes */ #declare paredes = union { box { <-espParede/2, 0, -espParede/2>, } box { , } box { <-espParede/2, 0, -espParede/2>, } pigment { color rgb corParede } } #declare janela= box { <-.5, -.5, -.5>, <.5, .5, .5> texture { NBglass } } #declare hasteHorizontalZ= box { <-espHaste/2, -largHaste/2, -largBandejao1/2>, texture { Aluminum } } #declare hasteHorizontalX= box { <-compBandejao/2, -largHaste/2, -espHaste/2>, texture { Aluminum } } #declare hasteVerticalZ= box { <-espHaste/2, -altHaste/2, -largHaste/2>, texture { Aluminum } } #declare hasteVerticalX= box { <-largHaste/2, -altHaste/2, -espHaste/2>, texture { Aluminum } } /* desenha hastes nas paredes ao longo de z */ /* #declare numJanelasZ=floor(largBandejao1/(largJanela+largHaste)); #declare numJanelasX=floor(compBandejao/(largJanela+largHaste)); #declare ijanz=0; #declare inumJanZ=0; #while (inumMesasZ < numJanelasZ) object { mesaCompleta translate } #declare imesaz = imesaz+largMesa+entreMesasZ; #declare inumMesasZ=inumMesasZ+1; #end #if (bool1=0) #declare imesax = imesax+compMesa+entreMesasJuntas; #declare bool1=1; #else #declare imesax = imesax+compMesa+entreMesasX; #declare bool1=0; #end #declare inumMesasX=inumMesasX+1; #end */ /* desenha mesas */ #declare bool1=0; #declare imesax=distMesa_ParedeX+compMesa/2; #declare inumMesasX=0; #while (inumMesasX < numMesasX) #declare imesaz=distMesa_ParedeZ+largMesa/2; #declare inumMesasZ=0; #while (inumMesasZ < numMesasZ) object { mesaCompleta translate } #declare imesaz = imesaz+largMesa+entreMesasZ; #declare inumMesasZ=inumMesasZ+1; #end #if (bool1=0) #declare imesax = imesax+compMesa+entreMesasJuntas; #declare bool1=1; #else #declare imesax = imesax+compMesa+entreMesasX; #declare bool1=0; #end #declare inumMesasX=inumMesasX+1; #end object { casaLavaBandeja scale <6/7, 1, .66> translate <6/7*compLB/2 + distLB_ParedeX, 0, 0> } object { casaLavaBandeja translate } object { rampaCompleta translate } object { plataformaSuperior } object { bilheteria } object { casaNutr } object { paredes } /* janelas ao longo de Z */ object { janela scale translate <0, altTodasJanelas/2+altParede, largBandejao1/2> } object { janela scale translate } /* janelas ao longo de X */ object { janela scale translate } background { color rgb <.5,.8,1> } #declare corLuz = .3*<1,1,1>; #declare altLuz = 12; light_source { < 4/5, altLuz, 4/5 > color rgb corLuz } light_source { < 4/5*compBandejao, altLuz, 4/5 > color rgb corLuz } light_source { < 4/5*compBandejao, altLuz, 1.3*largBandejao1 > color rgb corLuz } light_source { < 4/5, altLuz, 1.3*largBandejao1 > color rgb corLuz } light_source { < .5*compBandejao, 20, -10 > color rgb <1,1,1> } /* homo sapiens 1 */ /* camera { location look_at sky <0,1,0> } */ /* camera { location look_at sky <0,1,0> } */ /* top view global */ camera { location look_at sky <0,1,0> } /* top view rampa */ /* camera { location look_at sky <0,1,0> } */ /* 360 graus */ /* camera { location look_at sky <0,1,0> } */