dastal
Version:
Data Structures & Algorithms implementations
68 lines • 1.79 kB
JavaScript
;
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