UNPKG

@thi.ng/vectors

Version:

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

31 lines (30 loc) 906 B
import { isNumber } from "@thi.ng/checks/is-number"; function mapVectors(fn, out, a, b, c) { const num = a.length; !out && (out = new Array(num)); c !== void 0 ? isNumber(c) ? __mapVVN(fn, out, a, b, c) : __mapVVV(fn, out, a, b, c) : isNumber(b) ? __mapVN(fn, out, a, b) : __mapVV(fn, out, a, b); return out; } const __mapVN = (fn, out, a, b) => { for (let i = 0, num = a.length; i < num; i++) { out[i] = fn(out[i] || [], a[i], b); } }; const __mapVV = (fn, out, a, b) => { for (let i = 0, num = a.length; i < num; i++) { out[i] = fn(out[i] || [], a[i], b[i]); } }; const __mapVVN = (fn, out, a, b, c) => { for (let i = 0, num = a.length; i < num; i++) { out[i] = fn(out[i] || [], a[i], b[i], c); } }; const __mapVVV = (fn, out, a, b, c) => { for (let i = 0, num = a.length; i < num; i++) { out[i] = fn(out[i] || [], a[i], b[i], c[i]); } }; export { mapVectors };