PSystem ps; Particle[] ParLine = new Particle[50]; Particle[] ParSpiral = new Particle[50]; float r; void setup() { size(500,500); ps = (PSystem)loadPlugin("PSystem"); framerate(30); for(int i=0; i<50; ++i) { if (i<25) { r = i*20.0; } if (i>24) { r = (50-i)*20; } ParLine[i] = new Particle(width/2,5+i*height/50,0); ps.addParticle(ParLine[i]); ps.defaultSpringRestLength = 1; ps.defaultSpringStrength = 2; if (i>0) { ps.addSpring(ParLine[i], ParLine[i-1]); ps.addSpring(ParSpiral[i-1], ParLine[i]); } ParSpiral[i] = new Particle(width/2 + r*sin(i*2*PI/5), i*height/50, r*cos(i*2*PI/5)); ps.addParticle(ParSpiral[i]); ps.defaultSpringRestLength = r/2; ps.defaultSpringStrength = .5; ps.addSpring(ParLine[i], ParSpiral[i]); if (i>4) { ps.defaultSpringRestLength = 25; ps.addSpring(ParSpiral[i], ParSpiral[i-5]); } if (i>0) { ps.defaultSpringRestLength = r/2; ps.addSpring(ParSpiral[i], ParSpiral[i-1]); } } ps.setGravity(0.2); } void loop() { background(0,204,0); stroke(200,0,0); ParLine[0].setPos(mouseX, mouseY, 0); ps.draw(); }