moveTowards method

V2 moveTowards(
  1. V2 target,
  2. double maxDistance
)

Implementation

V2 moveTowards(V2 target, double maxDistance) {
  final dx = target.x - x;
  final dy = target.y - y;
  final value = (dx*dx) + (dy*dy);

  if (
    (value == 0) ||
    ((maxDistance >= 0) && (value <= maxDistance*maxDistance))
  ) return target;

  final dist = math.sqrt(value);

  return _v2(
    x + dx/dist*maxDistance,
    y + dy/dist*maxDistance,
  );
}