moveTowards method
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,
);
}