moveTowards method

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

Implementation

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

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

  final dist = math.sqrt(value);

  return .vec3(
    x + dx/dist*maxDistance,
    y + dy/dist*maxDistance,
    z + dz/dist*maxDistance,
  );
}