UNPKG

@thi.ng/vectors

Version:

Optimized 2d/3d/4d and arbitrary length vector operations, support for memory mapping/layouts

32 lines (31 loc) 971 B
import { EPS } from "@thi.ng/math/api"; import { mag } from "./mag.js"; import { magSq2, magSq3, magSq4 } from "./magsq.js"; import { mulN, mulN2, mulN3, mulN4 } from "./muln.js"; import { set, set2, set3, set4 } from "./set.js"; const normalize = (out, v, n = 1) => { !out && (out = v); const m = mag(v); return m >= EPS ? mulN(out, v, n / m) : out !== v ? set(out, v) : out; }; const normalize2 = (out, v, n = 1) => { !out && (out = v); const m = Math.sqrt(magSq2(v)); return m >= EPS ? mulN2(out, v, n / m) : out !== v ? set2(out, v) : out; }; const normalize3 = (out, v, n = 1) => { !out && (out = v); const m = Math.sqrt(magSq3(v)); return m >= EPS ? mulN3(out, v, n / m) : out !== v ? set3(out, v) : out; }; const normalize4 = (out, v, n = 1) => { !out && (out = v); const m = Math.sqrt(magSq4(v)); return m >= EPS ? mulN4(out, v, n / m) : out !== v ? set4(out, v) : out; }; export { normalize, normalize2, normalize3, normalize4 };