Particle3D[] tracers; Attractor attractor; Repulsor[] repulsors; Vec3D light; float MAX_STEER=.01f; float MAX_VEL=1.0f; int NUM_REPULSORS = 160; int NUM_TRACERS = 100; void setup(){ size(800,800); background(120); noStroke(); randomTracers(); Vec3D target = new Vec3D(0,0,0); attractor = new Attractor(target,100f,1f); randomRepulsors(); light = randomLight(); smooth(); } void draw(){ translate(400,400); for (int t=0;t MAX_STEER) steer = steer.mul(MAX_STEER / steer.size); tracers[t].update(steer); stroke((int)random(120.0f),(int)random(40.0f),(int)random(40.0f),20); float s = random(40.0f); line(tracers[t].pos.x+s*tracers[t].vel.y,tracers[t].pos.y-s*tracers[t].vel.x,tracers[t].pos.x-s*tracers[t].vel.y,tracers[t].pos.y+s*tracers[t].vel.x); noStroke(); fill(255,120); //ellipse(tracers[t].pos.x+light.x,tracers[t].pos.y+light.y,4,4); ellipse(tracers[t].pos.x,tracers[t].pos.y,4,4); fill(0,120); ellipse(tracers[t].pos.x,tracers[t].pos.y,2,2); if(tracers[t].pos.size