UNPKG

@mousepox/math

Version:

Math-related objects and utilities

41 lines (40 loc) 1.47 kB
export var DirectionMask; (function (DirectionMask) { DirectionMask[DirectionMask["None"] = 0] = "None"; DirectionMask[DirectionMask["North"] = 1] = "North"; DirectionMask[DirectionMask["East"] = 2] = "East"; DirectionMask[DirectionMask["South"] = 4] = "South"; DirectionMask[DirectionMask["West"] = 8] = "West"; DirectionMask[DirectionMask["NorthEast"] = 16] = "NorthEast"; DirectionMask[DirectionMask["SouthEast"] = 32] = "SouthEast"; DirectionMask[DirectionMask["SouthWest"] = 64] = "SouthWest"; DirectionMask[DirectionMask["NorthWest"] = 128] = "NorthWest"; })(DirectionMask || (DirectionMask = {})); export const GoldenRatio = (Math.sqrt(5) + 1) / 2; export const Tau = Math.PI * 2; export function approximately(a, b, threshold = Number.EPSILON) { return Math.abs(a - b) < threshold; } export function clamp(value, min, max) { return Math.min(Math.max(value, min), max); } export function distance(x1, y1, x2, y2) { return Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2); } export function manhattanDistance(x1, y1, x2, y2) { return Math.abs(x1 - x2) + Math.abs(y1 - y2); } export function lerpAngle(a, b, t) { const da = (b - a) % Tau; const n = ((2 * da) % Tau) - da; return a + n * t; } export function sign(n) { return n > 0 ? 1 : n === 0 ? 0 : -1; } export function lerp(a, b, t) { return a + (b - a) * t; } export function wrapRadians(radians) { return ((radians % Tau) + Tau) % Tau; }