/* MC930 - 2o. sem 2000 - Prof. Jorge Stolfi * * Trabalho Prático: "Interior do Bandejão" * * by Paulo Eduardo Ferreira de Castro - RA 971379 * */ 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 <0, 3, -1> look_at <27, 0, 12> sky <0,1,0> } /* chão */ plane { y, 0 texture { pigment { color rgb <0,0,0> } } } /* largura -> eixo Z comprimento -> eixo X altura -> eixo Y */ #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 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> } } #declare casaLavaBandeja = #declare imesax=1; /* mesas comecam a 1 metro da parede */ #while (imesax < (numMesasX * (compMesa+entreMesasX) - entreMesasX) ) #declare imesaz=5; /* mesas comecam a 5 metros da parede */ #while (imesaz < (numMesasZ * (largMesa+entreMesasZ) - entreMesasZ) ) object { mesaCompleta translate } #declare imesaz = imesaz+largMesa+entreMesasZ; #end #declare imesax = imesax+compMesa+entreMesasX; #end