/*A building inspired by the Wells Fargo Center in Houston.*/ FLOORS = 134; SIZE = 1.0; //textures window = new UniformTexture(); window.diffuseColor.setRGB(0.6, 0.8, 0.5); window.specularity = 0.3f; window.shininess = 1.0f; conc = new UniformTexture(); conc.diffuseColor.setRGB(0.8, 0.8, 0.8); box = new Cube(SIZE*25, SIZE*FLOORS, SIZE*8); box.setTexture(window, window.getDefaultMapping(box)); p = new Vec3(0.0, SIZE*FLOORS/2.0, 0.0); script.addObject(box, new CoordinateSystem(p, 0, 0, 0)); cy = new Cylinder(SIZE*FLOORS, SIZE*4, SIZE*4, 1.0); cy.setTexture(window, window.getDefaultMapping(cy)); p = new Vec3(SIZE*12.5, SIZE*FLOORS/2.0, 0.0); script.addObject(cy, new CoordinateSystem(p, 0, 0, 0)); p = new Vec3(-SIZE*12.5, SIZE*FLOORS/2.0, 0.0); script.addObject(cy, new CoordinateSystem(p, 0, 0, 0)); //horizontal bars for (i=1; i<=FLOORS; i++) { box = new Cube(SIZE*25, SIZE*0.2, SIZE*8.2); box.setTexture(conc, conc.getDefaultMapping(box)); y = i*SIZE; p = new Vec3(0.0, y, 0.0); script.addObject(box, new CoordinateSystem(p, 0, 0, 0)); cy = new Cylinder(SIZE*0.1, SIZE*4.1, SIZE*4.1, 1.0); cy.setTexture(conc, conc.getDefaultMapping(cy)); p = new Vec3(SIZE*12.5, y, 0.0); script.addObject(cy, new CoordinateSystem(p, 0, 0, 0)); p = new Vec3(-SIZE*12.5, y, 0.0); script.addObject(cy, new CoordinateSystem(p, 0, 0, 0)); } //vertical bars box = new Cube(SIZE*0.2, SIZE*FLOORS, SIZE*8.2); box.setTexture(conc, conc.getDefaultMapping(box)); for (i=0; i<=25; i++) { x = i*SIZE - SIZE*25/2.0; p = new Vec3(x, SIZE*FLOORS/2.0, 0.0); script.addObject(box, new CoordinateSystem(p, 0, 0, 0)); } box = new Cube(SIZE*0.2, SIZE*FLOORS, SIZE*8.2); box.setTexture(conc, conc.getDefaultMapping(box)); for (i=0; i<=12; i++) { p = new Vec3(SIZE*12.5, SIZE*FLOORS/2.0, 0.0); script.addObject(box, new CoordinateSystem(p, 0, i*15, 0)); p = new Vec3(-SIZE*12.5, SIZE*FLOORS/2.0, 0.0); script.addObject(box, new CoordinateSystem(p, 0, i*15, 0)); } //bottom section n = 60; frac = 0.4; r = n*SIZE/Math.PI/2; theta = 360.0/n; y = Math.floor(FLOORS*frac)*SIZE; cy = new Cylinder(y, r, r, 1.0); cy.setTexture(window, window.getDefaultMapping(cy)); p = new Vec3(0.0, y/2.0, 0.0); script.addObject(cy, new CoordinateSystem(p, 0, 0, 0)); //horizontal bars for (i=0; i<=Math.floor(FLOORS*frac); i++) { cy = new Cylinder(SIZE*0.2, r+SIZE*0.1, r+SIZE*0.1, 1.0); cy.setTexture(conc, conc.getDefaultMapping(cy)); p = new Vec3(0.0, i*SIZE, 0.0); script.addObject(cy, new CoordinateSystem(p, 0, 0, 0)); } //verticals box = new Cube(SIZE*0.2, y, 2*SIZE*(r+0.1)); box.setTexture(conc, conc.getDefaultMapping(box)); for (i=0; i