@thi.ng/vectors
Version:
Optimized 2d/3d/4d and arbitrary length vector operations, support for memory mapping/layouts
30 lines (29 loc) • 875 B
JavaScript
import { magSq, magSq2, magSq3, magSq4 } from "./magsq.js";
import { mulN, mulN2, mulN3, mulN4 } from "./muln.js";
import { set, set2, set3, set4 } from "./set.js";
const limit = (out, v, n) => {
!out && (out = v);
const m = magSq(v);
return m > n * n ? mulN(out, v, n / Math.sqrt(m)) : out !== v ? set(out, v) : out;
};
const limit2 = (out, v, n) => {
!out && (out = v);
const m = magSq2(v);
return m > n * n ? mulN2(out, v, n / Math.sqrt(m)) : out !== v ? set2(out, v) : out;
};
const limit3 = (out, v, n) => {
!out && (out = v);
const m = magSq3(v);
return m > n * n ? mulN3(out, v, n / Math.sqrt(m)) : out !== v ? set3(out, v) : out;
};
const limit4 = (out, v, n) => {
!out && (out = v);
const m = magSq4(v);
return m > n * n ? mulN4(out, v, n / Math.sqrt(m)) : out !== v ? set4(out, v) : out;
};
export {
limit,
limit2,
limit3,
limit4
};