/* 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=.5; #declare altJanelaGrande=.85; #declare altJanelaPequena=.4; #declare espJanela=.001; #declare altTodasJanelas=altBandejao-altParede; #declare largHasteFixa=.03; #declare espHasteFixa=.01; #declare largHasteMovel=.01; #declare espHasteMovel=.005; /* 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>; #declare corHaste=<.3, .3, .3>; /* ---------------------------------------------------- */ /* 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>, pigment { color rgb corParede } } box { <-espParede/2, 0, -espParede/2>, pigment { color rgb corParede } } box { , texture { NBglass } } } #declare janelaGrande= union { box { <-espJanela/2, -altJanelaGrande/2, -largJanela/2>, texture { NBglass } } box { <-espHasteMovel/2, -altJanelaGrande/2, -largJanela/2>, //texture { Aluminum } pigment { color rgb corHaste } } box { <-espHasteMovel/2, -altJanelaGrande/2, largJanela/2-largHasteMovel>, //texture { Aluminum } pigment { color rgb corHaste } } box { <-espHasteMovel/2, altJanelaGrande/2-largHasteMovel, -largJanela/2>, //texture { Aluminum } pigment { color rgb corHaste } } box { <-espHasteMovel/2, -altJanelaGrande/2, -largJanela/2>, //texture { Aluminum } pigment { color rgb corHaste } } } #declare janelaPequena= union { box { <-espJanela/2, -altJanelaPequena/2, -largJanela/2>, texture { NBglass } } box { <-espHasteMovel/2, -altJanelaPequena/2, -largJanela/2>, //texture { Aluminum } pigment { color rgb corHaste } } box { <-espHasteMovel/2, -altJanelaPequena/2, largJanela/2-largHasteMovel>, //texture { Aluminum } pigment { color rgb corHaste } } box { <-espHasteMovel/2, altJanelaPequena/2-largHasteMovel, -largJanela/2>, //texture { Aluminum } pigment { color rgb corHaste } } box { <-espHasteMovel/2, -altJanelaPequena/2, -largJanela/2>, //texture { Aluminum } pigment { color rgb corHaste } } } #declare hasteVertical= box { <-espHasteFixa/2, -.5, -largHasteFixa/2>, //texture { Aluminum } pigment { color rgb corHaste } } /* desenha janelas */ #declare numJanelasZ=floor(largBandejao1/(largJanela+largHasteFixa)); #declare numJanelasX=floor(compBandejao/(largJanela+largHasteFixa)); #declare numJanelasGrandesY=floor((2/3*altBandejao-altParede)/(altJanelaGrande+largHasteFixa)); #declare numJanelasPequenasY=floor(1/3*altBandejao/(altJanelaPequena+largHasteFixa)); #declare altHasteVertical1=numJanelasGrandesY*(altJanelaGrande+largHasteFixa)+ numJanelasPequenasY*(altJanelaPequena+largHasteFixa) + largHasteFixa; /* desenha janelas ao longo de z, na parede x=0 */ #declare ijanZ=0; #declare inumJanZ=0; #while (inumJanZ < numJanelasZ) object { hasteVertical scale <1, altHasteVertical1, 1> translate <0, altParede+(altHasteVertical1)/2, ijanZ> } #declare ijanZ=ijanZ+largHasteFixa; #declare ijanY=altParede+largHasteFixa+altJanelaGrande/2; #declare inumJanY=0; #while (inumJanY < numJanelasGrandesY) object { janelaGrande translate <0, ijanY, ijanZ+largJanela/2> } #declare ijanY = ijanY+altJanelaGrande+largHasteFixa; #declare inumJanY = inumJanY+1; #end #declare ijanY = ijanY - altJanelaGrande/2 + altJanelaPequena/2; #declare inumJanY=0; #while (inumJanY < numJanelasPequenasY) object { janelaPequena translate <0, ijanY, ijanZ+largJanela/2> } #declare ijanY = ijanY+altJanelaPequena+largHasteFixa; #declare inumJanY = inumJanY+1; #end #declare ijanZ = ijanZ+largJanela; #declare inumJanZ = inumJanZ+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 } 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 <0, altRampa, 1/2*largBandejao1> 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> } */