/* 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" global_settings { ambient_light rgb 4 } /* largura -> eixo Z comprimento -> eixo X altura -> eixo Y */ /* ------------------------------------------------------------------ Declaracoes de variaveis ------------------------------------------------------------------ */ /* variaveis booleanas */ #declare desenha_gente=0; /* 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 largBandejaoTotal = largBandejao1 + 18; #declare altBandejao = 6; /* nao inclui o teto */ /* bilheteria (casa de venda de tickets) */ #declare compBilheteria=6; #declare largBilheteria=6; #declare altBilheteria=altBandejao; /* 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; /* hall das roletas */ #declare compHallRoletas=6; #declare largHallRoletas=6; #declare compBalcaoRoletas=2; #declare largBalcaoRoletas=1.5; #declare altBalcaoRoletas=1.2; #declare espBalcaoRoletas=espMurinho; #declare altRoleta=.8; #declare raioRoleta=.4; /* pias */ #declare espacoPias=posXRampaCompleta-compRampaCompleta/2-largRampa-compBilheteria-compHallRoletas; #declare numPias=4; #declare entrePias=espacoPias/(numPias+1); #declare altPia=1.1; /* janelas */ #declare largHasteFixaHorizontal=.03; #declare largHasteFixaVertical=.15; #declare espHasteFixa=.02; #declare largHasteMovel=.01; #declare espHasteMovel=.005; #declare numJanelasGrandesY=3; #declare numJanelasPequenasY=2; #declare numJanelasZ=10; #declare altTodasJanelas=altBandejao; #declare espJanela=.003; #declare largJanela=(largBandejao1 - largHasteFixaVertical*(numJanelasZ+1)) / numJanelasZ; #declare altJanelaPequena = (altTodasJanelas - largHasteFixaHorizontal * (numJanelasPequenasY + numJanelasGrandesY + 1)) / (numJanelasPequenasY + 2*numJanelasGrandesY); #declare altJanelaGrande = 2*altJanelaPequena; #declare numJanelasX=(compBandejao-largHasteFixaVertical)/(largJanela+largHasteFixaVertical); /* paredes */ #declare altParede = 2*(altJanelaGrande+largHasteFixaHorizontal); #declare espParede = .25; /* teto */ #declare numPiramidesX=12; #declare ladoBasePiramide = compBandejao/numPiramidesX; #declare altPiramide = 2; /* cores */ #declare corChao=<.6, .6, .6>; #declare corParede=<1, 1, .7>; #declare corMurinho=<1, .8, .7>; #declare corPisoRampa=.5*corMurinho; #declare corBilheteria=corMurinho; #declare corRoleta=<.7,.7,.7>; #declare corCasaNutr=.5*<.8, 1, .8>; #declare corCasaLB=.6*<.8, .8, 1>; #declare corHaste=<.3, .3, .3>; #declare corTeto=<.78, .8, .5>; #declare corPia=1; #declare corTorneira=<.6, .6, .6>; #declare corBalcaoBandejas=<.8, .8, .8> #declare corMesa=.75*< 1, 1, .8 >; #declare corSuporteBanco=.8*< .976, .686, .4 >; /* ------------------------------------------------------------------ Camera ------------------------------------------------------------------ */ #declare altHomoSapiens=1.76; #switch (clock) #case (.00) #declare m_location=<2, altRampa+altHomoSapiens, largBandejao1+largBilheteria+2>; #declare angulo_xz=0; #declare angulo_xy=0; #break #case (.01) #declare m_location=<4, altRampa+altHomoSapiens, largBandejao1+largBilheteria+2>; #declare angulo_xz=-20; #declare angulo_xy=0; #break #case (.02) #declare m_location=<6, altRampa+altHomoSapiens, largBandejao1+largBilheteria+1.5>; #declare angulo_xz=-45; #declare angulo_xy=-20; #break #case (.03) #declare m_location=<7, altRampa+altHomoSapiens, largBandejao1+largBilheteria>; #declare angulo_xz=-80; #declare angulo_xy=-40; #break #case (.04) #declare m_location=<7, altRampa+altHomoSapiens, largBandejao1+largBilheteria>; #declare angulo_xz=-60; #declare angulo_xy=-20; #break #case (.05) #declare m_location=<7, altRampa+altHomoSapiens, largBandejao1+largBilheteria-1>; #declare angulo_xz=-60; #declare angulo_xy=0; #break #case (.06) #declare m_location=<8, altRampa+altHomoSapiens, largBandejao1+largBilheteria-2>; #declare angulo_xz=-30; #declare angulo_xy=0; #break #case (.07) #declare m_location=<9, altRampa+altHomoSapiens, largBandejao1+3>; #declare angulo_xz=0; #declare angulo_xy=0; #break #case (.08) #declare m_location=<11, altRampa+altHomoSapiens, largBandejao1+3>; #declare angulo_xz=10; #declare angulo_xy=0; #break #case (.09) #declare m_location=<13, altRampa+altHomoSapiens, largBandejao1+3>; #declare angulo_xz=40; #declare angulo_xy=0; #break #case (.10) #declare m_location=<15, altRampa+altHomoSapiens, largBandejao1+3>; #declare angulo_xz=20; #declare angulo_xy=0; #break #case (.11) #declare m_location=<17, altRampa+altHomoSapiens, largBandejao1+2>; #declare angulo_xz=0; #declare angulo_xy=0; #break #case (.12) #declare m_location=<19, altRampa+altHomoSapiens, largBandejao1+1>; #declare angulo_xz=-20; #declare angulo_xy=-20; #break #case (.13) #declare m_location=<21, altRampa+altHomoSapiens, largBandejao1+.3>; #declare angulo_xz=-45; #declare angulo_xy=-45; #break #case (.14) #declare m_location=<23, altRampa+altHomoSapiens, largBandejao1+.3>; #declare angulo_xz=-70; #declare angulo_xy=-20; #break #case (.15) #declare m_location=<25, altRampa+altHomoSapiens, largBandejao1+1>; #declare angulo_xz=-30; #declare angulo_xy=-20; #break #case (.16) #declare m_location=<27, altRampa+altHomoSapiens, largBandejao1+2>; #declare angulo_xz=-10; #declare angulo_xy=-10; #break #case (.17) #declare m_location=<29, altRampa+altHomoSapiens, largBandejao1+3>; #declare angulo_xz=0; #declare angulo_xy=-10; #break #case (.18) #declare m_location=<31, altRampa+altHomoSapiens, largBandejao1+3>; #declare angulo_xz=-10; #declare angulo_xy=-10; #break #case (.19) #declare m_location=<33, altRampa+altHomoSapiens, largBandejao1+3.5>; #declare angulo_xz=10; #declare angulo_xy=-10; #break #case (.20) #declare m_location=<35, altRampa+altHomoSapiens, largBandejao1+4>; #declare angulo_xz=10; #declare angulo_xy=-20; #break #case (.21) #declare m_location=<37, altRampa+altHomoSapiens, largBandejao1+4.5>; #declare angulo_xz=20; #declare angulo_xy=-40; #break #case (.22) #declare m_location=<37, altRampa+altHomoSapiens, posZRampaCompleta>; #declare angulo_xz=50; #declare angulo_xy=-40; #break #case (.23) #declare m_location=<37, altRampa+altHomoSapiens, posZRampaCompleta>; #declare angulo_xz=90; #declare angulo_xy=-45; #break #case (.24) #declare m_location=<37, altRampa+altHomoSapiens, posZRampaCompleta>; #declare angulo_xz=135; #declare angulo_xy=-45; #break #case (.25) #declare m_location=<36, altRampa+altHomoSapiens, posZRampaCompleta>; #declare angulo_xz=180; #declare angulo_xy=-45; #break #case (.26) #declare m_location=<34, altRampa+altHomoSapiens-2*tan(altRampa/compRampa), posZRampaCompleta>; #declare angulo_xz=180; #declare angulo_xy=-45; #break #case (.27) #declare m_location=<32, altRampa+altHomoSapiens-4*tan(altRampa/compRampa), posZRampaCompleta>; #declare angulo_xz=180; #declare angulo_xy=-40; #break #case (.28) #declare m_location=<30, altRampa+altHomoSapiens-6*tan(altRampa/compRampa), posZRampaCompleta>; #declare angulo_xz=195; #declare angulo_xy=-30; #break #case (.29) #declare m_location=<28, altRampa+altHomoSapiens-8*tan(altRampa/compRampa), posZRampaCompleta>; #declare angulo_xz=210; #declare angulo_xy=-20; #break #case (.30) #declare m_location=<26, altHomoSapiens, posZRampaCompleta>; #declare angulo_xz=170; #declare angulo_xy=-45; #break #case (.31) #declare m_location=<26, altHomoSapiens, posZRampaCompleta>; #declare angulo_xz=135; #declare angulo_xy=-45; #break #case (.32) #declare m_location=<26, altHomoSapiens, posZRampaCompleta>; #declare angulo_xz=90; #declare angulo_xy=-45; #break #case (.33) #declare m_location=<26, altHomoSapiens, posZRampaCompleta+.5*largRampa>; #declare angulo_xz=45; #declare angulo_xy=-45; #break #case (.34) #declare m_location=<27, altHomoSapiens, posZRampaCompleta+1.1*largRampa>; #declare angulo_xz=45; #declare angulo_xy=-30; #break #case (.35) #declare m_location=<29, altHomoSapiens, posZRampaCompleta+1.2*largRampa>; #declare angulo_xz=30; #declare angulo_xy=-10; #break #case (.36) #declare m_location=<31, altHomoSapiens, posZRampaCompleta+1.2*largRampa>; #declare angulo_xz=0; #declare angulo_xy=0; #break #case (.37) #declare m_location=<33, altHomoSapiens, posZRampaCompleta+1.2*largRampa>; #declare angulo_xz=0; #declare angulo_xy=0; #break #case (.37) #declare m_location=<35, altHomoSapiens, posZRampaCompleta+1.2*largRampa>; #declare angulo_xz=-20; #declare angulo_xy=0; #break #case (.38) #declare m_location=<37, altHomoSapiens, posZRampaCompleta+1.2*largRampa>; #declare angulo_xz=-45; #declare angulo_xy=0; #break #case (.39) #declare m_location=<37, altHomoSapiens, posZRampaCompleta+1.2*largRampa>; #declare angulo_xz=-90; #declare angulo_xy=0; #break #case (.40) #declare m_location=<37, altHomoSapiens, posZRampaCompleta-1>; #declare angulo_xz=-90; #declare angulo_xy=0; #break #case (.41) #declare m_location=<37, altHomoSapiens, posZRampaCompleta-3>; #declare angulo_xz=-110; #declare angulo_xy=0; #break #case (.42) #declare m_location=<35, altHomoSapiens, posZRampaCompleta-5>; #declare angulo_xz=-135; #declare angulo_xy=0; #break #case (.43) #declare m_location=<33, altHomoSapiens, posZRampaCompleta-5>; #declare angulo_xz=-160; #declare angulo_xy=0; #break #case (.44) #declare m_location=<31, altHomoSapiens, posZRampaCompleta-5>; #declare angulo_xz=-180; #declare angulo_xy=0; #break #case (.45) #declare m_location=<29, altHomoSapiens, posZRampaCompleta-5>; #declare angulo_xz=-180; #declare angulo_xy=0; #break #case (.46) #declare m_location=<27, altHomoSapiens, posZRampaCompleta-5>; #declare angulo_xz=-160; #declare angulo_xy=0; #break #case (.47) #declare m_location=<25.5, altHomoSapiens, posZRampaCompleta-5>; #declare angulo_xz=-135; #declare angulo_xy=0; #break #case (.48) #declare m_location=<25.5, altHomoSapiens, posZRampaCompleta-6>; #declare angulo_xz=-90; #declare angulo_xy=0; #break #case (.49) #declare m_location=<25.5, altHomoSapiens, posZRampaCompleta-8>; #declare angulo_xz=-90; #declare angulo_xy=0; #break #case (.50) #declare m_location=<25.5, altHomoSapiens, posZRampaCompleta-10>; #declare angulo_xz=-90; #declare angulo_xy=0; #break #case (.51) #declare m_location=<25.5, altHomoSapiens, posZRampaCompleta-12>; #declare angulo_xz=-90; #declare angulo_xy=0; #break #case (.52) #declare m_location=<25.5, altHomoSapiens, posZRampaCompleta-14>; #declare angulo_xz=-90; #declare angulo_xy=0; #break #case (.53) #declare m_location=<25.5, altHomoSapiens, posZRampaCompleta-14>; #declare angulo_xz=-100; #declare angulo_xy=0; #break #case (.54) #declare m_location=<25.5, altHomoSapiens, posZRampaCompleta-14>; #declare angulo_xz=-110; #declare angulo_xy=0; #break #case (.55) #declare m_location=<25.5, altHomoSapiens, posZRampaCompleta-14>; #declare angulo_xz=-120; #declare angulo_xy=0; #break #case (.56) #declare m_location=<25.5, altHomoSapiens, posZRampaCompleta-14>; #declare angulo_xz=-130; #declare angulo_xy=0; #break #case (.57) #declare m_location=<25.5, altHomoSapiens, posZRampaCompleta-14>; #declare angulo_xz=-140; #declare angulo_xy=0; #break #case (.58) #declare m_location=<25.5, altHomoSapiens, posZRampaCompleta-14>; #declare angulo_xz=-150; #declare angulo_xy=0; #break #case (.59) #declare m_location=<25.5, altHomoSapiens, posZRampaCompleta-14>; #declare angulo_xz=-160; #declare angulo_xy=0; #break #case (.60) #declare m_location=<25.5, altHomoSapiens, posZRampaCompleta-14>; #declare angulo_xz=-170; #declare angulo_xy=0; #break #case (.61) #declare m_location=<25.5, altHomoSapiens, posZRampaCompleta-14>; #declare angulo_xz=-180; #declare angulo_xy=0; #break #case (.62) #declare m_location=<25.5, altHomoSapiens, posZRampaCompleta-14>; #declare angulo_xz=170; #declare angulo_xy=0; #break #case (.63) #declare m_location=<25.5, altHomoSapiens, posZRampaCompleta-14>; #declare angulo_xz=160; #declare angulo_xy=0; #break #case (.64) #declare m_location=<25.5, altHomoSapiens, posZRampaCompleta-14>; #declare angulo_xz=150; #declare angulo_xy=0; #break #case (.65) #declare m_location=<25.5, altHomoSapiens, posZRampaCompleta-14>; #declare angulo_xz=140; #declare angulo_xy=0; #break #case (.66) #declare desenha_gente=1; #declare m_location=<25.5, altHomoSapiens+altRampa/2, posZRampaCompleta-14>; #declare angulo_xz=130; #declare angulo_xy=0; #break #case (.67) #declare desenha_gente=1; #declare m_location=<25.5, altHomoSapiens+altRampa/2, posZRampaCompleta-14>; #declare angulo_xz=120; #declare angulo_xy=0; #break #case (.68) #declare desenha_gente=1; #declare m_location=<25.5, altRampa, posZRampaCompleta-14>; #declare angulo_xz=110; #declare angulo_xy=0; #break #case (.69) #declare desenha_gente=1; #declare m_location=<25.5, altRampa, posZRampaCompleta-14>; #declare angulo_xz=100; #declare angulo_xy=0; #break #case (.70) #declare desenha_gente=1; #declare m_location=<25.5, altRampa, posZRampaCompleta-14>; #declare angulo_xz=90; #declare angulo_xy=0; #break #case (.71) #declare desenha_gente=1; #declare m_location=<25.5, altRampa, posZRampaCompleta-14>; #declare angulo_xz=80; #declare angulo_xy=0; #break #case (.72) #declare desenha_gente=1; #declare m_location=<25.5, altRampa, posZRampaCompleta-14>; #declare angulo_xz=70; #declare angulo_xy=0; #break #case (.73) #declare desenha_gente=1; #declare m_location=<25.5, altHomoSapiens+altRampa/2, posZRampaCompleta-14>; #declare angulo_xz=60; #declare angulo_xy=0; #break #case (.74) #declare desenha_gente=1; #declare m_location=<25.5, altHomoSapiens+altRampa/2, posZRampaCompleta-14>; #declare angulo_xz=50; #declare angulo_xy=0; #break #case (.75) #declare m_location=<25.5, altHomoSapiens, posZRampaCompleta-14>; #declare angulo_xz=40; #declare angulo_xy=0; #break #case (.76) #declare m_location=<25.5, altHomoSapiens, posZRampaCompleta-14>; #declare angulo_xz=30; #declare angulo_xy=0; #break #case (.77) #declare m_location=<25.5, altHomoSapiens, posZRampaCompleta-14>; #declare angulo_xz=20; #declare angulo_xy=0; #break #case (.78) #declare m_location=<25.5, altHomoSapiens, posZRampaCompleta-14>; #declare angulo_xz=10; #declare angulo_xy=0; #break #case (.79) #declare m_location=<25.5, altHomoSapiens, posZRampaCompleta-14>; #declare angulo_xz=0; #declare angulo_xy=0; #break #case (.80) #declare m_location=<25.5, altHomoSapiens, posZRampaCompleta-14>; #declare angulo_xz=-10; #declare angulo_xy=0; #break #case (.81) #declare m_location=<25.5, altHomoSapiens, posZRampaCompleta-14>; #declare angulo_xz=-20; #declare angulo_xy=0; #break #case (.82) #declare m_location=<25.5, altHomoSapiens, posZRampaCompleta-14>; #declare angulo_xz=-30; #declare angulo_xy=0; #break #case (.83) #declare m_location=<25.5, altHomoSapiens, posZRampaCompleta-14>; #declare angulo_xz=-40; #declare angulo_xy=0; #break #case (.84) #declare m_location=<25.5, altHomoSapiens, posZRampaCompleta-14>; #declare angulo_xz=-50; #declare angulo_xy=0; #break #case (.85) #declare m_location=<25.5, altHomoSapiens, posZRampaCompleta-14>; #declare angulo_xz=-60; #declare angulo_xy=0; #break #case (.86) #declare m_location=<25.5, altHomoSapiens, posZRampaCompleta-14>; #declare angulo_xz=-70; #declare angulo_xy=0; #break #case (.87) #declare m_location=<25.5, altHomoSapiens, posZRampaCompleta-14>; #declare angulo_xz=-80; #declare angulo_xy=0; #break #end camera { location m_location look_at m_location + sky <0,1,0> } /* sphere { <25.5, altHomoSapiens, posZRampaCompleta-14>, 1 pigment { color rgb <.7, .7, 1> } } */ /* ------------------------------------------------------------------ Figuras ------------------------------------------------------------------ */ /* homo sapiens */ #declare homoSapiens= union { sphere { <0, 1.8, 0>, .13 } cone { <0, .5, 0>, 0.3 // Center and radius of one end <0, 1.6, 0>, 0 // Center and radius of other end } cylinder { <0, 1.35, 0>, <.5, 1.7, 0>, .05 } cylinder { <0, 1.5, 0>, <-.5, 1.7, 0>, .04 } pigment { color rgb <1, .7, .7> } } /* teto */ #declare piramide1= prism { conic_sweep linear_spline 0, // height 1 altPiramide, // height 2 5, // the number of points making up the shape... , <-ladoBasePiramide/2, ladoBasePiramide/2>, <-ladoBasePiramide/2, -ladoBasePiramide/2>, , hollow scale <1, -1, 1> translate <0, altPiramide, 0> pigment { color rgb corTeto } } #declare piramide= difference { object { piramide1 } object { piramide1 translate <0, -.05, 0> } } /* mesas */ #declare mesa = box { <-compMesa/2, altMesa, -largMesa/2>, pigment { color rgb corMesa } } #declare banco = box { <-ladoBanco/2, altBanco, -ladoBanco/2>, pigment { color rgb corMesa } } #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 corSuporteBanco } } #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 } } box { <-compHallRampas/2, espPiso/2, largRampa/2-espMurinho>, translate <0, altRampa, 0> pigment { color rgb corMurinho } } object { rampa scale <-1, 1, 1> translate } object { rampa translate <-compRampa/2 - compHallRampas/2, altRampa/2, 0> } } /* Bilheteria */ #declare bilheteria= box { <-espParede/2, 0, largBandejao1>, pigment { color corBilheteria } } /* Parede Pias */ #declare parede_pias= union { difference { box { <0, 0, largBandejao1+largHallRoletas>, pigment { color corMurinho } } box { , pigment { color corMurinho } } } box { , pigment { color corMurinho } } } /* Pia */ #declare pia= union { difference { sphere { <0,0,0>, .7 scale <1, .5, 1> pigment { color rgb corPia } } sphere { <0,0,0>, .64 scale <1, .5, 1> pigment { color rgb corPia } } box { <-2,-2,0>, <2,2,2> pigment { color rgb corPia } } box { <-2,0,-2>, <2,2,2> pigment { color rgb corPia } } } /* torneira */ cylinder { <0,.1,0>, <0,.1,-.15>, .015 hollow pigment { color rgb corTorneira } } } /* Balcao das Roletas */ #declare balcaoRoletas= union { box { // murinho para o lado dos banheiros , pigment { color rgb corMurinho } } box { // murinho para o lado das mesas , pigment { color rgb corMurinho } } box { // murinho para o lado da Bilheteria , pigment { color rgb corMurinho } } box { // murinho para o lado do lugar onde se servem as bandejas , pigment { color rgb corMurinho } } } /* Roleta */ /* desenhada na origem */ #declare espRoleta=.05; #declare roletaTorusRatio=.25; #declare roleta= union { cylinder { <0,0,0>, <0,altRoleta,0>, .08 pigment { color rgb corRoleta } } torus { // default: desenhado no plano xz raioRoleta, espRoleta scale <1, 1, roletaTorusRatio> rotate 90*x translate <0, altRoleta - roletaTorusRatio*raioRoleta, 0> pigment { color rgb corRoleta } } torus { raioRoleta, espRoleta scale <1, 1, roletaTorusRatio> rotate <90, 90, 0> translate <0, altRoleta - roletaTorusRatio*raioRoleta, 0> pigment { color rgb corRoleta } } } #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 } } box { // parede que fecha a rampa esquerda (esquerda=menor x) , pigment { color rgb corMurinho } } box { // murinho no chao , pigment { color rgb corMurinho } } } /* balcao onde sao servidos os homo sapiens */ #declare largBalcaoBandejas=1; #declare posZBalcaoBandejas=posZRampaCompleta+2*largRampa+largBalcaoBandejas/2; union { box { , pigment { color rgb corBalcaoBandejas } } /* canaletas por onde as bandejas se arrastam */ cylinder { , , .03 pigment { color rgb corBalcaoBandejas } } cylinder { , , .03 pigment { color rgb corBalcaoBandejas } } } /* 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 } pigment { color rgb 1 } } } /* paredes/pisos do resto: banheiros, cozinha, adm... */ declare paredesResto= union { box { <-espParede/2, 0, largBandejaoTotal-espParede/2>, pigment { color corParede } } box { , pigment { color corParede } } box { , pigment { color corParede } } box { <-espParede/2, 0, largBandejao1+largBilheteria>, pigment { color corParede } } box { <-espParede/2, 0, largBandejaoTotal-(largBandejaoTotal-largBandejao1-largBilheteria)/2> pigment { color corParede } } box { <-espParede/2, altRampa, largBandejaoTotal-(largBandejaoTotal-largBandejao1-largBilheteria)/2-espParede/2>, pigment { color corParede } } /* piso */ box { <-espParede/2, altRampa-espPiso/2, largBandejao1+largBilheteria>, pigment { color corChao } } } #declare janelaGrande= union { box { <-espJanela/2, -altJanelaGrande/2, -largJanela/2>, texture { NBglass } //pigment { color rgb 1 } } 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 } //pigment { color rgb 1 } } 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, -largHasteFixaVertical/2>, texture { Aluminum } //pigment { color rgb corHaste } } #declare hasteHorizontal= box { <-espHasteFixa/2, -largHasteFixaHorizontal/2, -.5>, texture { Aluminum } //pigment { color rgb corHaste } } /* desenha janelas */ #declare s1=seed(0); #declare minAnguloAbertura=20; // graus #declare maxAnguloAbertura=45; // graus #declare deltaAbertura=maxAnguloAbertura-minAnguloAbertura; /* desenha janelas ao longo de z, na parede x=0 */ #declare paredeDeVidroZ = union { #declare ijanZ=0; #declare inumJanZ=0; #while (inumJanZ < numJanelasZ) object { hasteVertical scale <1, altBandejao, 1> translate <0, altBandejao/2, ijanZ> } #declare ijanZ=ijanZ+largHasteFixaVertical/2; #declare ijanY=0; #declare inumJanY=0; #while (inumJanY < numJanelasGrandesY) #if (inumJanZ=0) object { hasteHorizontal scale <1, 1, largBandejao1> translate <0, ijanY+largHasteFixaHorizontal/2, largBandejao1/2> } #end #declare ijanY = ijanY+largHasteFixaHorizontal; #declare r1=rand(s1); #if ((inumJanY<2) | (inumJanZ=0)) object { janelaGrande // janela fechada translate <0, ijanY+altJanelaGrande/2, ijanZ+largJanela/2> } #else object { janelaGrande // janela aberta rotate <0, 0, -(minAnguloAbertura+deltaAbertura*r1)> translate <0, ijanY+altJanelaGrande/2, ijanZ+largJanela/2> } #end #declare ijanY = ijanY+altJanelaGrande; #declare inumJanY = inumJanY+1; #end #declare inumJanY=0; #while (inumJanY < numJanelasPequenasY) #if (inumJanZ=0) object { hasteHorizontal scale <1, 1, largBandejao1> translate <0, ijanY+largHasteFixaHorizontal/2, largBandejao1/2> } #end #declare ijanY = ijanY+largHasteFixaHorizontal; #declare r1=rand(s1); #if (inumJanZ=0) object { janelaPequena translate <0, ijanY+altJanelaPequena/2, ijanZ+largJanela/2> } #else object { janelaPequena rotate <0, 0, -(minAnguloAbertura+deltaAbertura*r1)> translate <0, ijanY+altJanelaPequena/2, ijanZ+largJanela/2> } #end #declare ijanY = ijanY+altJanelaPequena; #declare inumJanY = inumJanY+1; #end #if (inumJanZ=0) object { hasteHorizontal scale <1, 1, largBandejao1> translate <0, ijanY+largHasteFixaHorizontal/2, largBandejao1/2> } #end #declare ijanZ = ijanZ+largJanela+largHasteFixaVertical/2; #declare inumJanZ = inumJanZ+1; #end object { hasteVertical scale <1, altBandejao, 1> translate <0, altBandejao/2, ijanZ> } } //union /* desenha janelas ao longo de x, na parede z=0 */ #declare paredeDeVidroX = union { #declare ijanX=0; #declare inumJanX=0; #while (inumJanX < numJanelasX) object { hasteVertical rotate -90*y scale <1, altBandejao, 1> translate } #declare ijanX=ijanX+largHasteFixaVertical/2; #declare ijanY=altParede; #declare inumJanY=0; #while (inumJanY < (numJanelasGrandesY-2)) #if (inumJanX=0) object { hasteHorizontal rotate -90*y scale translate } #end #declare ijanY = ijanY+largHasteFixaHorizontal; object { janelaGrande // janela fechada rotate -90*y translate } #declare ijanY = ijanY+altJanelaGrande; #declare inumJanY = inumJanY+1; #end #declare inumJanY=0; #while (inumJanY < numJanelasPequenasY) #if (inumJanX=0) object { hasteHorizontal rotate -90*y scale translate } #end #declare ijanY = ijanY+largHasteFixaHorizontal; #declare r1=rand(s1); object { janelaPequena rotate <0, 0, -(minAnguloAbertura+deltaAbertura*r1)> rotate -90*y translate } #declare ijanY = ijanY+altJanelaPequena; #declare inumJanY = inumJanY+1; #end #if (inumJanX=0) object { hasteHorizontal rotate -90*y scale translate } #end #declare ijanX = ijanX+largJanela+largHasteFixaVertical/2; #declare inumJanX = inumJanX+1; #end object { hasteVertical rotate -90*y scale <1, altBandejao, 1> translate <0, altBandejao/2, ijanZ> } } //union /* desenha teto */ #declare iPiramideX=ladoBasePiramide/2; #declare inumPiramidesX=0; #while (inumPiramidesX < numPiramidesX) #declare iPiramideZ=ladoBasePiramide/2; #while (iPiramideZ < largBandejaoTotal) object { piramide translate } #declare iPiramideZ=iPiramideZ+ladoBasePiramide; #end #declare iPiramideX=iPiramideX+ladoBasePiramide; #declare inumPiramidesX=inumPiramidesX+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 { balcaoRoletas } object { roleta rotate <0, -20, 0> translate } object { roleta rotate <0, 10, 0> translate } object { parede_pias } object { pia translate } object { pia translate } object { pia translate } object { pia translate } object { casaNutr } object { paredeDeVidroZ } object { paredeDeVidroZ scale <-1,1,1> translate } object { paredeDeVidroX } object { paredes } object { paredesResto } #if (desenha_gente != 0) object { homoSapiens translate } object { homoSapiens translate } object { homoSapiens translate } #end /* chão */ plane { y, -0.001 //pigment { color rgb <.6, .9, .6> } //normal { bumps .75 scale .25 } pigment { agate color_map { [0.0 color rgb <.6, .9, .6>] [1.0 color rgb <.3, .6, .3>] } } } box { <0,0,0>, pigment { color rgb corChao } } /* céu */ // background { color rgb <.5,.8,1> } sky_sphere { pigment { gradient y color_map { [.0015 color rgb <1, 1, .8>] [.0015 color rgb <.75, 0.95, 1>] [.01 color rgb <.5, 0.8, 1>] [.2 color rgb <.4, .6, .8>] } scale 2 translate -1 } pigment { bozo turbulence 0.65 octaves 6 omega 0.7 lambda 2 color_map { [0.0 0.1 color rgb <0.85, 0.85, 0.85> color rgb <0.75, 0.75, 0.75>] [0.1 0.5 color rgb <0.75, 0.75, 0.75> color rgbt <1, 1, 1, 1>] [0.5 1.0 color rgbt <1, 1, 1, 1> color rgbt <1, 1, 1, 1>] } scale <0.2, 0.5, 0.2> } rotate <-120, 90, 0> } /* luz */ light_source { color rgb .91 shadowless } light_source { color rgb .3 area_light , <0, 0, largBandejaoTotal>, 10, 5 //shadowless } light_source { color rgb .6 shadowless } light_source { color rgb .6 shadowless} light_source { color rgb .6 shadowless} light_source { color rgb .6 shadowless} /* top view global */ /* camera { location look_at sky <0,1,0> } */ /* animacao 360 graus */ /* camera { location look_at sky <0,1,0> } */