/*A tall hotel like tower with a peaked roof.*/ SIZE = 1.0; FLOORS = 35; SQRT2 = Math.sqrt(2); //textures roof = new UniformTexture(); roof.diffuseColor.setRGB(0.2f,0.2f,0.3f); paint = new UniformTexture(); paint.diffuseColor.setHSV(40,0.4f,0.7f); win = new UniformTexture(); win.diffuseColor.setRGB(0.5,0.5,0.5); win.specularity = 0.5f; win.shininess = 1.0f; //main body box = new Cube(45.02*SIZE,FLOORS*SIZE,10.02*SIZE); box.setTexture(win, win.getDefaultMapping(box)); p = new Vec3(0,FLOORS*SIZE/2,0); script.addObject(box, new CoordinateSystem(p, 0,0,0)); box = new Cube(45.1*SIZE,0.5*SIZE,10.1*SIZE); box.setTexture(paint, paint.getDefaultMapping(box)); for (i=0;i<=FLOORS;i++) { p = new Vec3(0,i*SIZE,0); script.addObject(box, new CoordinateSystem(p, 0,0,0)); } box = new Cube(1.5*SIZE,SIZE*FLOORS,10.1*SIZE); box.setTexture(paint, paint.getDefaultMapping(box)); for (i=-10;i<=10;i++) { p = new Vec3(i*2*SIZE,FLOORS*SIZE/2,0); script.addObject(box, new CoordinateSystem(p, 0,0,0)); } box = new Cube(45.1*SIZE,SIZE*FLOORS,1.5*SIZE); box.setTexture(paint, paint.getDefaultMapping(box)); for (i=1;i<=2;i++) { z = i*2*SIZE+0.25*SIZE; p = new Vec3(0,FLOORS*SIZE/2,z); script.addObject(box, new CoordinateSystem(p, 0,0,0)); p = new Vec3(0,FLOORS*SIZE/2,-z); script.addObject(box, new CoordinateSystem(p, 0,0,0)); } box = new Cube(45.1*SIZE,SIZE*FLOORS,2*SIZE); box.setTexture(paint, paint.getDefaultMapping(box)); p = new Vec3(0,FLOORS*SIZE/2,0); script.addObject(box, new CoordinateSystem(p, 0,0,0)); //corners box = new Cube(1.3*SIZE,SIZE*FLOORS,0.1*SIZE); box.setTexture(paint, paint.getDefaultMapping(box)); p = new Vec3(21.9*SIZE,SIZE*FLOORS/2,5*SIZE); script.addObject(box, new CoordinateSystem(p, 0,0,0)); p = new Vec3(-21.9*SIZE,SIZE*FLOORS/2,5*SIZE); script.addObject(box, new CoordinateSystem(p, 0,0,0)); p = new Vec3(21.9*SIZE,SIZE*FLOORS/2,-5*SIZE); script.addObject(box, new CoordinateSystem(p, 0,0,0)); p = new Vec3(-21.9*SIZE,SIZE*FLOORS/2,-5*SIZE); script.addObject(box, new CoordinateSystem(p, 0,0,0)); //roof offset = FLOORS*SIZE+0.75*SIZE; box = new Cube(45.3*SIZE,0.5*SIZE,10.3*SIZE); box.setTexture(paint, paint.getDefaultMapping(box)); p = new Vec3(0,FLOORS*SIZE+0.5*SIZE,0); script.addObject(box, new CoordinateSystem(p, 0,0,0)); box = new Cube(45*SIZE,10*SIZE/SQRT2,10*SIZE/SQRT2); box.setTexture(roof, roof.getDefaultMapping(box)); p = new Vec3(0,offset,0); script.addObject(box, new CoordinateSystem(p, 45,0,0)); box = new Cube(45.01*SIZE,9.99*SIZE/SQRT2,9.99*SIZE/SQRT2); box.setTexture(paint, paint.getDefaultMapping(box)); script.addObject(box, new CoordinateSystem(p, 45,0,0)); box = new Cube(10*SIZE/SQRT2,10*SIZE/SQRT2,10*SIZE); box.setTexture(roof, roof.getDefaultMapping(box)); box2 = new Cube(9.99*SIZE/SQRT2,9.99*SIZE/SQRT2,10.01*SIZE); box2.setTexture(paint, paint.getDefaultMapping(box2)); for (i=-1;i<=1;i++) { p = new Vec3(i*(10+15/4.0)*SIZE,offset,0); script.addObject(box, new CoordinateSystem(p, 0,0,45)); script.addObject(box2, new CoordinateSystem(p, 0,0,45)); } //front box = new Cube(10.02*SIZE,SIZE,5.02*SIZE); box.setTexture(win, win.getDefaultMapping(box)); p = new Vec3(0,0.5*SIZE,7.5*SIZE); script.addObject(box, new CoordinateSystem(p, 0,0,0)); box = new Cube(0.3*SIZE,SIZE,0.3*SIZE); box.setTexture(paint, paint.getDefaultMapping(box)); for (i=1;i<=5;i++) { x = i*SIZE-0.1*SIZE; p = new Vec3(x,0.5*SIZE,9.9*SIZE); script.addObject(box, new CoordinateSystem(p, 0,0,0)); p = new Vec3(-x,0.5*SIZE,9.9*SIZE); script.addObject(box, new CoordinateSystem(p, 0,0,0)); } for (i=0;i<4;i++) { z = (5.9+i)*SIZE; p = new Vec3(4.9*SIZE,0.5*SIZE,z); script.addObject(box, new CoordinateSystem(p, 0,0,0)); p = new Vec3(-4.9*SIZE,0.5*SIZE,z); script.addObject(box, new CoordinateSystem(p, 0,0,0)); } //roof of front box = new Cube(10.3*SIZE,0.5*SIZE,5.3*SIZE); box.setTexture(paint, paint.getDefaultMapping(box)); p = new Vec3(0,1.25*SIZE,7.5*SIZE); script.addObject(box, new CoordinateSystem(p, 0,0,0)); box = new Cube(10*SIZE,5*SIZE/SQRT2,5*SIZE/SQRT2); box.setTexture(roof, roof.getDefaultMapping(box)); p = new Vec3(0,1.5*SIZE,7.5*SIZE); script.addObject(box, new CoordinateSystem(p, 45,0,0)); box = new Cube(10.01*SIZE,4.99*SIZE/SQRT2,4.99*SIZE/SQRT2); box.setTexture(paint, paint.getDefaultMapping(box)); script.addObject(box, new CoordinateSystem(p, 45,0,0)); box = new Cube(5*SIZE/SQRT2,5*SIZE/SQRT2,5*SIZE); box.setTexture(roof, roof.getDefaultMapping(box)); box2 = new Cube(4.99*SIZE/SQRT2,4.99*SIZE/SQRT2,5.01*SIZE); box2.setTexture(paint, paint.getDefaultMapping(box2)); p = new Vec3(0,1.5*SIZE,7.5*SIZE); script.addObject(box, new CoordinateSystem(p, 0,0,45)); script.addObject(box2, new CoordinateSystem(p, 0,0,45));