UNPKG

dastal

Version:

Data Structures & Algorithms implementations

68 lines 1.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.wrap = exports.wrapRight = exports.wrapLeft = exports.clamp = void 0; /** * Limits a number to be within a given range. * * f(x, min, max) = y, where min <= y <= max * * @param num - The number to clamp * @param min - The minimum result value, inclusive * @param max - The maximum result value, inclusive * * @returns The clamped number */ function clamp(num, min, max) { return Math.min(max, Math.max(min, num)); } exports.clamp = clamp; /** * Wraps a number if below a given range * * f(x, min, max) = { * x, where x >= min * max - (min - x), where x < min * } * * @param num - The number to wrap * @param min - The minimum result value, inclusive * @param max - The maximum result value, inclusive * * @returns - The wrapped number */ function wrapLeft(num, min, max) { return num < min ? max - min + num : num; } exports.wrapLeft = wrapLeft; /** * Wraps a number if above a given range * * f(x, min, max) = { * x, where x <= max * min + (x - max), where x > max * } * * @param num - The number to wrap * @param min - The minimum result value, inclusive * @param max - The maximum result value, inclusive * * @returns - The wrapped number */ function wrapRight(num, min, max) { return num > max ? min + (num - max) : num; } exports.wrapRight = wrapRight; /** * Wraps a number if outside a given range * * @param num - The number to wrap * @param min - The minimum result value, inclusive * @param max - The maximum result value, inclusive * * @returns - The wrapped number */ function wrap(num, min, max) { return num < min ? max - min + num : wrapRight(num, min, max); } exports.wrap = wrap; //# sourceMappingURL=numberUtils.js.map