forceOn method

Offset forceOn(
  1. Offset particlePosition,
  2. double deltaTime
)

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);
}