@thi.ng/vectors
Version:
Optimized 2d/3d/4d and arbitrary length vector operations, support for memory mapping/layouts
24 lines (23 loc) • 564 B
JavaScript
import { mag } from "./mag.js";
import { setC2, setC3 } from "./setc.js";
import { vop } from "./vop.js";
const sqrt = Math.sqrt;
const asin = Math.asin;
const atan2 = Math.atan2;
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
};