@turbox3d/math
Version:
Large-scale graphics application math library
102 lines (101 loc) • 4.18 kB
TypeScript
import { Quaternion } from './base/Quaternion';
import { Vector2 } from './base/Vector2';
import { Vector3 } from './base/Vector3';
declare const MathUtils: {
DEG2RAD: number;
RAD2DEG: number;
generateUUID(): string;
clamp(value: number, min: number, max: number): number;
euclideanModulo(n: number, m: number): number;
mapLinear(x: number, a1: number, a2: number, b1: number, b2: number): number;
lerp(x: number, y: number, t: number): number;
damp(x: number, y: number, lambda: number, dt: number): number;
pingpong(x: number, length?: number): number;
smoothstep(x: number, min: number, max: number): number;
smootherstep(x: number, min: number, max: number): number;
randInt(low: number, high: number): number;
randFloat(low: number, high: number): number;
randFloatSpread(range: number): number;
seededRandom(s: number): number;
degToRad(degrees: number): number;
radToDeg(radians: number): number;
isPowerOfTwo(value: number): boolean;
ceilPowerOfTwo(value: number): number;
floorPowerOfTwo(value: number): number;
setQuaternionFromProperEuler(q: Quaternion, a: number, b: number, c: number, order: string): void;
isEqual(num1: number, num2: number, tol?: number): boolean;
isZero(num: number, tol?: number): boolean;
/**
* Check wether num1 is smaller than num2 with specified tolerance.
* Global (default) tolerance will be used if tol is not provided.
* @param num1
* @param num2
* @param tol
*/
isSmaller(num1: number, num2: number, tol?: number): boolean;
/**
* Check whether num1 is bigger than num2 with specified tolerance.
* Global (default) tolerance will be used if tol is not provided.
* @param num1
* @param num2
* @param tol
*/
isBigger(num1: number, num2: number, tol?: number): boolean;
/**
* Check whether num1 is smaller than or equal to num2 with specified tolerance.
* Global (default) tolerance will be used if tol is not provided.
* @param num1
* @param num2
* @param tol
*/
isSmallerOrEqual(num1: number, num2: number, tol?: number): boolean;
/**
* Check whether num1 is bigger than or equal to num2 with specified tolerance.
* Global (default) tolerance will be used if tol is not provided.
* @param num1
* @param num2
* @param tol
*/
isBiggerOrEqual(num1: number, num2: number, tol?: number): boolean;
/**
* Check whether a number is in a range with specified tolerance.
* Global (default) tolerance will be used if tol is not provided.
* @param value the value to be checked.
* @param min the range's lower limit.
* @param max the range's upper limit.
* @param minOpen whether the range's lower limit is open, default is false.
* @param maxOpen whether the range's upper limit is open, default is false.
* @param tol
*/
isInRange(value: number, min: number, max: number, minOpen?: boolean, maxOpen?: boolean, tol?: number): boolean;
/**
* Compare two numbers:
* If num1 is fuzzy equal to num2, return 0.
* If num1 is fuzzy bigger than num2, return 1.
* If num1 is fuzzy smaller than num2, return -1.
* If num1 or num2 is a NaN, throw exception.
* @param num1
* @param num2
* @param tol
*/
compare(num1: number, num2: number, tol?: number): -1 | 0 | 1;
/**
* 单向线性插值
*/
interpolation(start: Vector3, end: Vector3, segments?: number): Vector3[];
/**
* 根据四方点生成网格
* @param quadPositions 四方点,左上角为起点,按照顺时针顺序
* @param widthSegments 宽度分割段数
* @param heightSegments 高度分割段数
*/
generateMeshByQuad(quadPositions: Vector3[], widthSegments?: number, heightSegments?: number): {
indices: number[];
vertices: number[];
normals: number[];
uvs: number[];
};
/** 把无序的点排序成顺逆时针的邻接点,只支持凸多边形 */
clockwisePoints(points: Vector2[], clockwise?: boolean): Vector2[];
};
export { MathUtils };