UNPKG

@technobuddha/library

Version:
30 lines 2.02 kB
import { normalizeAngle } from "./normalize-angle.js"; import { toAngle } from "./to-angle.js"; /** * Computes the difference between startAngle and endAngle. * @param startAngle - Start angle. * @param endAngle - End angle. * @param options - see {@link UnitOptions} * @returns The amount that when added to *startAngle* will result in *endAngle*. * @remarks * Positive numbers mean that the * direction is clockwise. Negative numbers indicate a counter-clockwise direction. * The shortest route (clockwise vs counter-clockwise) between the angles is used. * When the difference is π radians, the function returns π (not -π) * @example * ```typescript * angleDifference(Math.PI * 1/6, Math.PI * 2/6); // π * 1/6 * angleDifference(Math.PI * 2/6, Math.PI * 1/6); // -π * 1/6. * angleDifference(30, 60, 'deg'); // 30 * ``` * @group Geometry * @category Angle */ export function angleDifference(startAngle, endAngle, { unit = 'radians' } = {}) { let d = normalizeAngle(endAngle, { unit }) - normalizeAngle(startAngle, { unit }); if (d > Math.PI) { d -= Math.PI * 2; } return toAngle(d + 0, 'radians', unit); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5nbGUtZGlmZmVyZW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9hbmdsZS1kaWZmZXJlbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXhDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FDN0IsVUFBa0IsRUFDbEIsUUFBZ0IsRUFDaEIsRUFBRSxJQUFJLEdBQUcsU0FBUyxLQUFrQixFQUFFO0lBRXRDLElBQUksQ0FBQyxHQUFHLGNBQWMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2xGLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNoQixDQUFDLElBQUksSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVELE9BQU8sT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3pDLENBQUMifQ==