public static Vector3D MoveTowards(Vector3D current, Vector3D target, double maxDistanceDelta) { Vector3D a = target - current; double magnitude = a.magnitude; if (magnitude <= maxDistanceDelta || magnitude == 0f) { return target; } return current + a / magnitude * maxDistanceDelta; }