@thi.ng/vectors
Version:
Optimized 2d/3d/4d and arbitrary length vector operations, support for memory mapping/layouts
22 lines (21 loc) • 526 B
JavaScript
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
};