float forceStep = 0.01; float gravity = 0.0; SliderV xSlid; SliderH ySlid; Button scene1, scene2, scene3, scene0, scene4; PhysicsObject objects; PFont font; //----------------------- void setup(){ size(400,400,P3D); framerate(30); sphereDetail(8); font = loadFont("sansserif-9.vlw"); xSlid = new SliderV(10,10,10,height-20,-HALF_PI,HALF_PI, 0); ySlid = new SliderH(30,height-20,width-90,10,-PI,PI, 0); scene0 = new Button(width-50,width-25,40,15,font,"scene 0"); scene1 = new Button(width-50,width-50,40,15,font,"scene 1"); scene2 = new Button(width-50,width-75,40,15,font,"scene 2"); scene3 = new Button(width-50,width-100,40,15,font,"scene 3"); scene4 = new Button(width-50,width-125,40,15,font,"scene 4"); scene0.setStateCount(2); scene1.setStateCount(2); scene2.setStateCount(2); scene3.setStateCount(2); scene4.setStateCount(2); color q = color(0), w = color(255,128), e = color(128); color a = color(128,128), s = color(0); scene0.makeState(0, "scene0", null, q, w, e); scene1.makeState(0, "scene1", null, q, w, e); scene2.makeState(0, "scene2", null, q, w, e); scene3.makeState(0, "scene3", null, q, w, e); scene4.makeState(0, "scene4", null, q, w, e); scene0.makeState(1, "scene0", null, q, a, s); scene1.makeState(1, "scene1", null, q, a, s); scene2.makeState(1, "scene2", null, q, a, s); scene3.makeState(1, "scene3", null, q, a, s); scene4.makeState(1, "scene4", null, q, a, s); scene0(); } //----------------------- void scene0(){ objects = new Ball(30f,0f,30f,0f); objects.add( new Ball(30f,0f,-30f,0f)); objects.add( new Ball(30f,0f,-90f,0f)); objects.add( new Ball(30f,0f,-150f,0f)); objects.add( new Ball(30f,0f,-210f,0f)); objects.add( new Ball(60f,80f,-60f,80f)); objects.add( new Ball(20f,50f,-350f,50f)); objects.add( new Surface(60f) ); objects.add( new Gravity(0.1) ); } //----------------------- void draw(){ background(255); lights(); pushMatrix(); translate(width/2,height/2,0); rotateX(-xSlid.value); rotateY(ySlid.value); objects.simulate(); objects.update(); objects.visualize(); popMatrix(); if(mousePressed){ xSlid.mouseInput(mouseX,mouseY); ySlid.mouseInput(mouseX,mouseY); } xSlid.visualize(); ySlid.visualize(); scene0.visualize(); scene1.visualize(); scene2.visualize(); scene3.visualize(); scene4.visualize(); } //------------------------------------------------ void mouseReleased() { xSlid.mouseInput(mouseX,mouseY); ySlid.mouseInput(mouseX,mouseY); if(scene0.mouseInput(mouseX,mouseY)){ scene0(); scene1.setState(0); scene2.setState(0); scene3.setState(0); scene4.setState(0); } if(scene1.mouseInput(mouseX,mouseY)){ objects = new Cloth(200f,10,-50f,-60f,-50f); objects.add( new Ball(50f,0f,4f,0f) ); objects.add( new Ball(30f,-30f,-1000f,-40f) ); objects.add( new Ball(40f,-60f,-600f,-80f) ); objects.add( new Surface(50f) ); objects.add( new Gravity(0.1) ); objects.add( new Friction(0.96) ); scene0.setState(0); scene2.setState(0); scene3.setState(0); scene4.setState(0); } if(scene2.mouseInput(mouseX,mouseY)){ objects = new Cloth(150f,15,-75f,-60f,-50f); objects.add( new Ball(50f,0f,4f,0f) ); objects.add( new Ball(30f,10f,-2000f,30f) ); objects.add( new Ball(40f,-20f,-600f,-20f) ); objects.add( new Surface(50f) ); objects.add( new Gravity(0.1) ); objects.add( new Friction(0.96) ); scene1.setState(0); scene0.setState(0); scene3.setState(0); scene4.setState(0); } if(scene3.mouseInput(mouseX,mouseY)){ objects = new Cloth(300f,20,-150f,-110f,-150f); objects.add( new Ball(50f,50f,-40f,50f) ); objects.add( new Ball(50f,50f,-40f,-50f) ); objects.add( new Ball(50f,-50f,-40f,50f) ); objects.add( new Ball(50f,-50f,-40f,-50f) ); objects.add( new Ball(100f,0f,-2000f,0f) ); objects.add( new Surface(50f) ); objects.add( new Gravity(0.1) ); objects.add( new Friction(0.95) ); scene1.setState(0); scene2.setState(0); scene0.setState(0); scene4.setState(0); } if(scene4.mouseInput(mouseX,mouseY)){ objects = new Cloth(200f,15,-100f,-100f,-100f); objects.add( new Ball(50f,0f,0f,0f) ); objects.add( new Surface(45f) ); objects.add( new Gravity(0.5) ); objects.add( new Friction(0.98) ); scene1.setState(0); scene2.setState(0); scene3.setState(0); scene0.setState(0); } } //-----------------------