forceOn method
Returns the velocity delta this attractor applies to a particle at
particlePosition over deltaTime.
Implementation
Offset forceOn(Offset particlePosition, double deltaTime) {
final center = position();
final dx = center.dx - particlePosition.dx;
final dy = center.dy - particlePosition.dy;
final distance = sqrt(dx * dx + dy * dy);
if (distance <= 0.0001 || distance >= radius) return Offset.zero;
final falloff = 1.0 - (distance / radius);
final magnitude = strength * falloff * deltaTime;
return Offset(dx / distance * magnitude, dy / distance * magnitude);
}