import { isPoint, pointRotateRads } from "./point"; import type { Curve, GenericPoint, Radians } from "./types"; /** * * @param a * @param b * @param c * @param d * @returns */ export function curve( start: Point, control1: Point, control2: Point, end: Point, ) { return [start, control1, control2, end] as Curve; } export const curveRotate = ( curve: Curve, angle: Radians, origin: Point, ) => { return curve.map((p) => pointRotateRads(p, origin, angle)); }; export const isCurve = ( c: unknown, ): c is Curve => { return ( c != null && Array.isArray(c) && c.length === 4 && isPoint((c as Curve)[0]) && isPoint((c as Curve)[1]) && isPoint((c as Curve)[2]) && isPoint((c as Curve)[3]) ); };