UNPKG

@thi.ng/vectors

Version:

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

22 lines (21 loc) 526 B
import { mag } from "./mag.js"; import { setC2, setC3 } from "./setc.js"; import { vop } from "./vop.js"; const { asin, atan2, sqrt } = Math; const polar = vop(1); const polar2 = polar.add( 2, (out, v) => setC2(out || v, mag(v), atan2(v[1], v[0])) ); const polar3 = polar.add(3, (out, v) => { const x = v[0]; const y = v[1]; const z = v[2]; const r = sqrt(x * x + y * y + z * z); return r > 0 ? setC3(out || v, r, asin(z / r), atan2(y, x)) : setC3(out || v, 0, 0, 0); }); export { polar, polar2, polar3 };