@moderrkowo/jsgl
Version:
Client-side JavaScript library for creating web 2D games. Focusing at objective game.
67 lines (66 loc) • 1.82 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.RandomInRange = exports.Range = exports.InvertedLerp = exports.Lerp = exports.Clamp01 = exports.Clamp = exports.IsInRange = exports.floor = void 0;
/**
* Speedy floor faster than Math.floor(a)
* @param a Value to floor
* @returns The floored number
*/
function floor(a) {
return a | a;
}
exports.floor = floor;
/**
* Checks is number in range
* @param a Value to check
* @param min Minimal of range
* @param max Maximum of range
* @returns is number in range
*/
function IsInRange(a, min, max) {
return a >= min && a <= max;
}
exports.IsInRange = IsInRange;
/**
* Clamps number between min and max
* @param a Value to clamp
* @param min The minimum value
* @param max The maximum value
* @returns Clamped number
*/
function Clamp(a, min, max) {
return Math.min(max, Math.max(min, a));
}
exports.Clamp = Clamp;
/**
* Clamps number between 0 and 1
* @param a Value to clamp
* @returns Clamped01 number
*/
function Clamp01(a) {
return Clamp(a, 0, 1);
}
exports.Clamp01 = Clamp01;
/**
* A Lerp function returns the value between two numbers at specified decimal midpoints.
* @param x The minimum of range
* @param y The maximum of range
* @param a Decimal midpoint
* @returns Value between two numbers
*/
function Lerp(x, y, a) {
return x * (1 - a) + y * a;
}
exports.Lerp = Lerp;
function InvertedLerp(x, y, a) {
return Clamp01((a - x) / (y - x));
}
exports.InvertedLerp = InvertedLerp;
function Range(x1, y1, x2, y2, a) {
return Lerp(x2, y2, InvertedLerp(x1, y1, a));
}
exports.Range = Range;
function RandomInRange(min, max) {
return floor(Math.random() * (max - min)) + min;
}
exports.RandomInRange = RandomInRange;