PSystem ps; Particle[] FarLeft = new Particle[14]; Particle[] FarRight = new Particle[14]; Particle[] NearLeft = new Particle[14]; Particle[] NearRight = new Particle[14]; Particle Center; float sl; float il; void setup() { size(500,500); ps = (PSystem)loadPlugin("PSystem"); framerate(30); Center = new Particle(0, 0,0); ps.addParticle(Center); Center.fix(); il = 2*sqrt(10); for(int i=0; i<14; ++i) { sl = i*20.0; FarLeft[i] = new Particle(-i*10-10,0,-i*10+10); ps.addParticle(FarLeft[i]); FarRight[i] = new Particle(i*10+10,0,-i*10+10); ps.addParticle(FarRight[i]); NearLeft[i] = new Particle(-i*10-10,0,i*10+10); ps.addParticle(NearLeft[i]); NearRight[i] = new Particle(i*10+10,0,i*10+10); ps.addParticle(NearRight[i]); ps.defaultSpringRestLength = sl; ps.defaultSpringStrength = 2; ps.defaultSpringDamping = 1; ps.addSpring(FarLeft[i],FarRight[i]); ps.addSpring(FarLeft[i],NearLeft[i]); ps.addSpring(NearLeft[i],NearRight[i]); ps.addSpring(NearRight[i],FarRight[i]); ps.defaultSpringRestLength = il; if(i>0) { ps.addSpring(FarLeft[i],FarLeft[i-1]); ps.addSpring(FarRight[i],FarRight[i-1]); ps.addSpring(NearLeft[i], NearLeft[i-1]); ps.addSpring(NearRight[i],NearRight[i-1]); } if(i>0) { ps.defaultSpringStrength = 2; ps.defaultSpringRestLength = sqrt(sq(sl-10)+100); ps.addSpring(FarLeft[i],FarRight[i-1]); ps.addSpring(FarRight[i],NearRight[i-1]); ps.addSpring(NearRight[i], NearLeft[i-1]); ps.addSpring(NearLeft[i],FarLeft[i-1]); ps.addSpring(FarLeft[i-1],FarRight[i]); ps.addSpring(FarRight[i-1],NearRight[i]); ps.addSpring(NearRight[i-1], NearLeft[i]); ps.addSpring(NearLeft[i-1],FarLeft[i]); } if(i>1) { ps.defaultSpringStrength = .2; ps.addSpring(FarLeft[i],FarLeft[i-2]); ps.addSpring(FarRight[i],FarRight[i-2]); ps.addSpring(NearLeft[i], NearLeft[i-2]); ps.addSpring(NearRight[i],NearRight[i-2]); } } ps.defaultSpringRestLength = il; ps.addSpring(FarLeft[0],Center); ps.addSpring(FarRight[0],Center); ps.addSpring(NearLeft[0], Center); ps.addSpring(NearRight[0],Center); ps.setGravity(0.2); } void loop() { stroke(200,204,50); background(40,0,50); translate(width/2,height/2); rotateX(mouseX*PI/250.0); rotateY(mouseY*PI/250.0); ps.draw(); }