UNPKG

@turbox3d/math

Version:

Large-scale graphics application math library

102 lines (101 loc) 4.18 kB
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 };