//A building with an offset section on the top loosely based on Montevideo tower in Rotterdam. SIZE = 1.0; FLOORS = 63;//multiple of 3 //textures window = new UniformTexture(); window.specularity = 0.5f; window.shininess = 1.0f; window.transparency = 0.5f; red = new UniformTexture(); red.diffuseColor.setHSV(15,0.5f,0.6f); white = new UniformTexture(); white.diffuseColor.setRGB(0.7,0.7,0.7); dark = new UniformTexture(); dark.diffuseColor.setRGB(0.4,0.4,0.4); //full height part box = new Cube(12*SIZE,FLOORS*SIZE,20*SIZE); box.setTexture(window, window.getDefaultMapping(box)); pos = new Vec3(0,FLOORS*SIZE/2,0); script.addObject(box, new CoordinateSystem(pos, 0,0,0)); // box = new Cube(0.6*SIZE,FLOORS*SIZE,20.2*SIZE); box.setTexture(red, red.getDefaultMapping(box)); for (i=-5;i<=5;i++) { pos = new Vec3(i*SIZE,FLOORS*SIZE/2,0); script.addObject(box, new CoordinateSystem(pos, 0,0,0)); } // box = new Cube(12.2*SIZE,FLOORS*SIZE,0.6*SIZE); box.setTexture(red, red.getDefaultMapping(box)); for (i=-9;i<=9;i++) { pos = new Vec3(0,FLOORS*SIZE/2,i*SIZE); script.addObject(box, new CoordinateSystem(pos, 0,0,0)); } //corners box = new Cube(0.4*SIZE,SIZE*FLOORS,0.4*SIZE); box.setTexture(red, red.getDefaultMapping(box)); x = 5.9*SIZE; z =9.9*SIZE; pos = new Vec3(-x,SIZE*FLOORS/2,-z); script.addObject(box, new CoordinateSystem(pos, 0,0,0)); pos = new Vec3(-x,SIZE*FLOORS/2,z); script.addObject(box, new CoordinateSystem(pos, 0,0,0)); pos = new Vec3(x,SIZE*FLOORS/2,-z); script.addObject(box, new CoordinateSystem(pos, 0,0,0)); pos = new Vec3(x,SIZE*FLOORS/2,z); script.addObject(box, new CoordinateSystem(pos, 0,0,0)); // box = new Cube(12.2*SIZE,0.4*SIZE,20.2*SIZE); box.setTexture(red, red.getDefaultMapping(box)); for (i=0;i<=FLOORS;i++) { pos = new Vec3(0,i*SIZE,0); script.addObject(box, new CoordinateSystem(pos, 0,0,0)); } //white part box = new Cube(6*SIZE,2*FLOORS/3*SIZE,12*SIZE); box.setTexture(window, window.getDefaultMapping(box)); pos = new Vec3(9*SIZE,FLOORS*SIZE/3,0); script.addObject(box, new CoordinateSystem(pos, 0,0,0)); // box = new Cube(0.3*SIZE,FLOORS*SIZE*2/3,12.05*SIZE); box.setTexture(white, white.getDefaultMapping(box)); for (i=0;i<6;i++) { pos = new Vec3((6+i)*SIZE,SIZE*FLOORS/3,0); script.addObject(box, new CoordinateSystem(pos, 0,0,0)); } // box = new Cube(6.05*SIZE,FLOORS*SIZE*2/3,0.3*SIZE); box.setTexture(white, white.getDefaultMapping(box)); for (i=-5;i<6;i++) { pos = new Vec3(9*SIZE,SIZE*FLOORS/3,i*SIZE); script.addObject(box, new CoordinateSystem(pos, 0,0,0)); } //corners box = new Cube(.155*SIZE,SIZE*FLOORS*2/3,.155*SIZE); box.setTexture(white, white.getDefaultMapping(box)); pos = new Vec3(11.95*SIZE,SIZE*FLOORS/3,5.95*SIZE); script.addObject(box, new CoordinateSystem(pos, 0,0,0)); // box = new Cube(6.05*SIZE,0.6*SIZE,12.05*SIZE); box.setTexture(white, white.getDefaultMapping(box)); for (i=0;i<=FLOORS*2/3;i++) { pos = new Vec3(9*SIZE,SIZE*i,0); script.addObject(box, new CoordinateSystem(pos, 0,0,0)); } //overhang offset = 7*SIZE; box = new Cube(SIZE,SIZE*(FLOORS/3+4),22*SIZE); box.setTexture(red, red.getDefaultMapping(box)); pos = new Vec3(0.5*SIZE,SIZE*(FLOORS*5.0/6+3),3*SIZE); script.addObject(box, new CoordinateSystem(pos, 0,0,0)); pos = new Vec3(13.5*SIZE,SIZE*(FLOORS*5.0/6+3),3*SIZE); script.addObject(box, new CoordinateSystem(pos, 0,0,0)); box = new Cube(14*SIZE,SIZE,22*SIZE); box.setTexture(red, red.getDefaultMapping(box)); pos = new Vec3(offset,SIZE*(FLOORS+5.5),3*SIZE); script.addObject(box, new CoordinateSystem(pos, 0,0,0)); pos = new Vec3(offset,SIZE*(FLOORS*2/3+0.5),3*SIZE); script.addObject(box, new CoordinateSystem(pos, 0,0,0)); box = new Cube(12*SIZE,SIZE*(FLOORS/3+4),20*SIZE); box.setTexture(window, window.getDefaultMapping(box)); pos = new Vec3(offset,SIZE*(FLOORS*5.0/6+3),3*SIZE); script.addObject(box, new CoordinateSystem(pos, 0,0,0)); //behind windows box = new Cube(12*SIZE,SIZE*(FLOORS/3+4),18*SIZE); box.setTexture(white, white.getDefaultMapping(box)); script.addObject(box, new CoordinateSystem(pos, 0,0,0)); box = new Cube(0.5*SIZE,SIZE*(FLOORS/3+4),20.2*SIZE); box.setTexture(white, white.getDefaultMapping(box)); script.addObject(box, new CoordinateSystem(pos, 0,0,0)); box = new Cube(0.1*SIZE,SIZE*(FLOORS/3+4),20.05*SIZE); box.setTexture(dark, dark.getDefaultMapping(box)); for (i=-5;i<=5;i++) { pos = new Vec3(offset+i*SIZE,SIZE*(FLOORS*5.0/6+3),3*SIZE); script.addObject(box, new CoordinateSystem(pos, 0,0,0)); } box = new Cube(12*SIZE,0.25*SIZE,20.1*SIZE); box.setTexture(dark, dark.getDefaultMapping(box)); for (i=FLOORS*2/3+1;i<=FLOORS+5;i++) { pos = new Vec3(offset, i*SIZE, 3*SIZE); script.addObject(box, new CoordinateSystem(pos, 0,0,0)); }