/*A building that is similar to an accordion fold. Number of sections easily changed.*/ FLOORS = 92; SECTIONS = 9; SIZE = 1.0; void segment(double x, double z) //makes a segment of the building { //textures win = new UniformTexture(); win.diffuseColor.setRGB(0.4, 0.4, 0.8); win.specularColor.setRGB(0.9, 0.9, 0.9); win.specularity = 0.25f; win.shininess = 1.0f; conc = new UniformTexture(); conc.diffuseColor.setRGB(0.8, 0.7, 0.7); box = new Cube(8*SIZE, SIZE*FLOORS, 6*SIZE); box.setTexture(win, win.getDefaultMapping(box)); p = new Vec3(x, SIZE*FLOORS/2, z); script.addObject(box, new CoordinateSystem(p, 0, 0, 0)); box = new Cube(6*SIZE, SIZE*FLOORS, 8*SIZE); box.setTexture(win, win.getDefaultMapping(box)); p = new Vec3(x, SIZE*FLOORS/2, z); script.addObject(box, new CoordinateSystem(p, 0, 0, 0)); cy = new Cylinder(SIZE*FLOORS, SIZE, SIZE, 1.0); cy.setTexture(win, win.getDefaultMapping(cy)); p = new Vec3(x+SIZE*3, SIZE*FLOORS/2, z+SIZE*3); script.addObject(cy, new CoordinateSystem(p, 0, 0, 0)); p = new Vec3(x-SIZE*3, SIZE*FLOORS/2, z+SIZE*3); script.addObject(cy, new CoordinateSystem(p, 0, 0, 0)); p = new Vec3(x+SIZE*3, SIZE*FLOORS/2, z-SIZE*3); script.addObject(cy, new CoordinateSystem(p, 0, 0, 0)); p = new Vec3(x-SIZE*3, SIZE*FLOORS/2, z-SIZE*3); script.addObject(cy, new CoordinateSystem(p, 0, 0, 0)); for (i=0; i<=FLOORS; i++) { box = new Cube(8.1*SIZE, SIZE*0.5, 6*SIZE); box.setTexture(conc, conc.getDefaultMapping(box)); p = new Vec3(x, SIZE*i, z); script.addObject(box, new CoordinateSystem(p, 0, 0, 0)); box = new Cube(6*SIZE, SIZE*0.5, 8.1*SIZE); box.setTexture(conc, conc.getDefaultMapping(box)); p = new Vec3(x, SIZE*i, z); script.addObject(box, new CoordinateSystem(p, 0, 0, 0)); cy = new Cylinder(SIZE*0.5, SIZE*1.05, SIZE*1.05, 1.0); cy.setTexture(conc, conc.getDefaultMapping(cy)); p = new Vec3(x+SIZE*3, SIZE*i, z+SIZE*3); script.addObject(cy, new CoordinateSystem(p, 0, 0, 0)); p = new Vec3(x-SIZE*3, SIZE*i, z+SIZE*3); script.addObject(cy, new CoordinateSystem(p, 0, 0, 0)); p = new Vec3(x+SIZE*3, SIZE*i, z-SIZE*3); script.addObject(cy, new CoordinateSystem(p, 0, 0, 0)); p = new Vec3(x-SIZE*3, SIZE*i, z-SIZE*3); script.addObject(cy, new CoordinateSystem(p, 0, 0, 0)); } box = new Cube(SIZE, SIZE*FLOORS, 8.2*SIZE); box.setTexture(conc, conc.getDefaultMapping(box)); p = new Vec3(x-2*SIZE, SIZE*FLOORS/2, z); script.addObject(box, new CoordinateSystem(p, 0, 0, 0)); p = new Vec3(x+2*SIZE, SIZE*FLOORS/2, z); script.addObject(box, new CoordinateSystem(p, 0, 0, 0)); p = new Vec3(x, SIZE*FLOORS/2, z-2*SIZE); script.addObject(box, new CoordinateSystem(p, 0, 90, 0)); p = new Vec3(x, SIZE*FLOORS/2, z+2*SIZE); script.addObject(box, new CoordinateSystem(p, 0, 90, 0)); } v = SIZE*5; kk = (int) Math.floor(SECTIONS/2); for (j=-kk; j