@technobuddha/library
Version:
A large library of useful functions
23 lines • 1.62 kB
JavaScript
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=