import { Point } from "../vendor/bezier-js"; /** Return the "reverse" of the given point/vector, i.e. scale it by -1. */ export function reversePoint(p: Point): Point { return { x: -p.x, y: -p.y }; } export function scalePointXY(p: Point, xScale: number, yScale: number): Point { return { x: p.x * xScale, y: p.y * yScale, }; } export function subtractPoints(p1: Point, p2: Point): Point { return { x: p1.x - p2.x, y: p1.y - p2.y, }; } export function normalizePoint(p: Point): Point { const len = Math.sqrt(Math.pow(p.x, 2) + Math.pow(p.y, 2)); if (len === 0) { throw new Error(`Unable to normalize point with length 0`); } return { x: p.x / len, y: p.y / len, }; } export function normalizedPoint2rad(p: Point): number { let result = Math.acos(p.x); if (p.y < 0) { result += (Math.PI - result) * 2; } return result; }