class Repulsor{ Vec3D pos; float radius; float multiplier; Repulsor(Vec3D pos, float radius, float multiplier){ this.pos = new Vec3D(pos); this.radius = radius; this.multiplier=multiplier; } Vec3D steeringForce(Particle3D p){ Vec3D repulsed = p.pos.sub(pos); float r = repulsed.size; if (r>radius){ return new Vec3D(); } else{ repulsed = repulsed.normalize(); repulsed = repulsed.mul(multiplier*(radius-r)); Vec3D steer = repulsed.sub(p.vel); line(pos.x,pos.y,pos.z,p.pos.x,p.pos.y,p.pos.z); return steer; } } }