@thi.ng/vectors
Version:
Optimized 2d/3d/4d and arbitrary length vector operations, support for memory mapping/layouts
19 lines (18 loc) • 609 B
JavaScript
import { absInnerAngle } from "@thi.ng/math/angle";
import { cross2 } from "./cross.js";
import { dot } from "./dot.js";
import { mag } from "./mag.js";
const angleRatio = (a, b) => dot(a, b) / (mag(a) * mag(b));
const angleBetween2 = (a, b, absInner = false) => {
const t = Math.atan2(cross2(a, b), dot(a, b));
return absInner ? absInnerAngle(t) : t;
};
const angleBetween3 = (a, b, normalize = true, absInner = false) => {
const t = normalize ? Math.acos(angleRatio(a, b)) : Math.acos(dot(a, b));
return absInner ? absInnerAngle(t) : t;
};
export {
angleBetween2,
angleBetween3,
angleRatio
};