@thi.ng/geom-arc
Version:
2D circular / elliptic arc operations
12 lines (11 loc) • 500 B
JavaScript
import { cossin } from "@thi.ng/math/angle";
import { fit01 } from "@thi.ng/math/fit";
import { add2 } from "@thi.ng/vectors/add";
import { mul2 } from "@thi.ng/vectors/mul";
import { rotateZ } from "@thi.ng/vectors/rotate";
const pointAt = (pos, r, axis, start, end, t, out = []) => pointAtTheta(pos, r, axis, fit01(t, start, end), out);
const pointAtTheta = (pos, r, axis, theta, out = []) => add2(null, rotateZ(null, mul2(out, cossin(theta), r), axis), pos);
export {
pointAt,
pointAtTheta
};