UNPKG

@fimbul-works/vec

Version:

A comprehensive TypeScript vector math library providing 2D, 3D, and 4D vector operations with a focus on performance and type safety.

15 lines (14 loc) 622 B
import { magnitude3D } from "./magnitude-3d.js"; /** * Clamps the magnitude of a vector between min and max. * @param {ArrayVector3D} xyz - Vector as `[x, y, z]` * @param {number} min - Minimum magnitude * @param {number} max - Maximum magnitude * @param {number} [m] - Optional current magnitude (default: `magnitude3D(xyz)`) * @returns {ArrayVector3D} The clamped vector */ export const clamp3D = (xyz, min, max, m = magnitude3D(xyz)) => m > max ? [(xyz[0] / m) * max, (xyz[1] / m) * max, (xyz[2] / m) * max] : m < min ? [(xyz[0] / m) * min, (xyz[1] / m) * min, (xyz[2] / m) * min] : xyz;