UNPKG

@technobuddha/library

Version:
23 lines 1.62 kB
import { normalizeAngle } from "./normalize-angle.js"; import { toAngle } from "./to-angle.js"; /** * Calculates the reflection of an angle across a specified axis. * @param angle - The angle to reflect. * @param axis - The axis across which to reflect the angle. * @param options - see {@link UnitOptions} * @returns The reflected angle, in the specified units. * @example * ```typescript * angleReflection(0, Math.PI / 2); // π * angleReflection((3 * Math.PI) / 2, Math.PI); // π/2 * angleReflection(60, 30, 'degrees'); // 0 * ``` * @group Geometry * @category Angle */ export function angleReflection(angle, axis, { unit = 'radians' } = {}) { // Calculate the reflected angle const reflectedAngle = normalizeAngle(2 * normalizeAngle(axis, { unit }) - normalizeAngle(angle, { unit })); return toAngle(reflectedAngle, 'radians', unit); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5nbGUtcmVmbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9hbmdsZS1yZWZsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXhDOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FDN0IsS0FBYSxFQUNiLElBQVksRUFDWixFQUFFLElBQUksR0FBRyxTQUFTLEtBQWtCLEVBQUU7SUFFdEMsZ0NBQWdDO0lBQ2hDLE1BQU0sY0FBYyxHQUFHLGNBQWMsQ0FDbkMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUNyRSxDQUFDO0lBRUYsT0FBTyxPQUFPLENBQUMsY0FBYyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNsRCxDQUFDIn0=