@thi.ng/math
Version:
Assorted common math functions & utilities
161 lines • 3.81 kB
TypeScript
import type { FnN, FnN2, FnN3, FnN4, FnU2, FnU3 } from "@thi.ng/api";
/**
* Clamps value `x` to given closed interval.
*
* @param x - value to clamp
* @param min - lower bound
* @param max - upper bound
*/
export declare const clamp: FnN3;
/**
* Clamps value `x` to closed `[0,∞]` interval.
*
* @param x -
*/
export declare const clamp0: FnN;
/**
* Clamps value `x` to closed `[0,1]` interval.
*
* @param x -
*/
export declare const clamp01: FnN;
/**
* Clamps value `x` to closed `[-1,1]` interval.
*
* @param x -
*/
export declare const clamp11: FnN;
/**
* Clamps value `x` to closed `[0,0.5]` interval.
*
* @param x -
*/
export declare const clamp05: FnN;
/**
* Returns 2-tuple of `[min(x,y), max(x,y)]`.
*
* @param x
* @param y
*/
export declare const minMax: FnU2<number, [number, number]>;
/**
* Folds `x` back inside closed `[min,max]` interval. Also see {@link wrapOnce}.
*
* @param x -
* @param min -
* @param max -
*/
export declare const wrap: FnN3;
/**
* Like {@link wrap}, but optimized for cases where `x` is guaranteed to be in
* `[min-d,max+d]` interval, where `d = max - min`. Result will be in closed
* `[min,max]` interval.
*
* @param x -
* @param min -
* @param max -
*/
export declare const wrapOnce: FnN3;
/**
* Similar to {@link wrapOnce} for `[0,1]` interval.
*
* @param x -
*/
export declare const wrap01: FnN;
/**
* Similar to {@link wrapOnce} for `[-1,1]` interval.
*
* @param x -
*/
export declare const wrap11: FnN;
export declare const min2id: FnN2;
export declare const min3id: FnN3;
export declare const min4id: FnN4;
export declare const max2id: FnN2;
export declare const max3id: FnN3;
export declare const max4id: FnN4;
/**
* Returns the non-zero minimum value of the given `a`, `b` args.
*
* @param a -
* @param b -
*/
export declare const minNonZero2: FnN2;
/**
* Returns the non-zero minimum value of the given `a`, `b`, `c` args.
*
* @param a -
* @param b -
* @param c -
*/
export declare const minNonZero3: FnN3;
/**
* Smooth minimum. See {@link smax} for details.
*
* @param a -
* @param b -
* @param k - smooth exponent (MUST be > 0)
*/
export declare const smin: FnN3;
/**
* Smooth maximum. Note: Result values will be slightly larger than max value
* near `max(a, b) + eps` due to exponential decay. Higher `k` values reduce the
* error, but also reduce the smoothing. Recommended k=16.
*
* https://en.wikipedia.org/wiki/Smooth_maximum
*
* @param a -
* @param b -
* @param k - smooth exponent (MUST be > 0)
*/
export declare const smax: FnN3;
/**
* Same as `smin(smax(x, min, k), max, k)`.
*
* @param x -
* @param min -
* @param max -
* @param k -
*/
export declare const sclamp: FnN4;
export declare const absMin: FnN2;
export declare const absMax: FnN2;
/**
* If `abs(x) > abs(e)`, recursively mirrors `x` back into `[-e,e]` interval at
* respective positive/negative boundary.
*
* @remarks
* References:
*
* - [Interactive graph](https://www.desmos.com/calculator/lkyf2ag3ta)
* - https://www.musicdsp.org/en/latest/Effects/203-fold-back-distortion.html
*
* @param e - threshold (> 0)
* @param x - input value
*/
export declare const foldback: FnN2;
/**
* Similar to {@link foldback}, but with fixed target range: Folds `x` into the
* closed `[0,1]` interval, using infinite internal reflection on either side of
* the interval.
*
* @param x
*/
export declare const foldback01: FnN;
/**
* Returns true iff `x` is in closed interval `[min,max]`
*
* @param x -
* @param min -
* @param max -
*/
export declare const inRange: FnU3<number, boolean>;
/**
* Returns true iff `x` is in open interval `(min,max)`
*
* @param x -
* @param min -
* @param max -
*/
export declare const inOpenRange: FnU3<number, boolean>;
//# sourceMappingURL=interval.d.ts.map