Math 数学

var _Math = { }
       exports.Math = _Math;

var n = THREE.Math.clamp(3, 1, 5); var r = THREE.Math.randInt(-100, 100); var mod = 7 % -4; var em = THREE.Math.euclideanModulo( 7, -4 ); console.log( n ); // 3 console.log( r ); console.log( mod ); // 3 console.log( em ); // -1

Constants

DEG2RAD : Float

Value : Math.PI / 180
Description : 角度 → 弧度.

RAD2DEG : Float

Value : 180 / Math.PI
Description : 弧度 → 角度.

Methods

generateUUID( ) : String

生成唯一识别码.

clamp( value, min, max ) : Float
value Float 你设定的值
min Float 最小值
max Float 最大值

Math.max( min, Math.min( max, value )
求value在min, max中的限定值. 超过max的取max; 小于min的取min; 都不是的取原来自身.

euclideanModulo( n, m ) : Integer
n Integer 被除数
m Integer 除数

( ( n % m ) + m ) % m
欧几里德取模运算. 要进行两次 % 运算是因为是取模, 而并非求余, 需要考虑负数. 7 % -4 = 3, euclideanModulo( 7, -4 ) = -1.
n % m 得到结果的正负由被除数 n 决定, 与 m 无关. 例如:7 % 4 = 3, -7 % 4 = -3, 7 % -4 = 3, -7 % -4 = -3.

ceilPowerOfTwo( n ) : Integer
n Number 真数

Math.pow( 2, Math.ceil( Math.log( n ) / Math.LN2 ) )
对 log2n 向上取整作为2的指数, 求幂.

floorPowerOfTwo( n ) : Integer
n Number 真数

Math.pow( 2, Math.floor( Math.log( n ) / Math.LN2 ) )
对 log2n 向下取整作为2的指数, 求幂.

degToRad( degrees ) : Float
degrees Float 角度

degrees * _Math.DEG2RAD
角度 → 弧度.

radToDeg( radians ) : Float
radians Float 弧度

radians * _Math.RAD2DEG
弧度 → 角度.

mapLinear( x, a1, a2, b1, b2 ) : Float
x Float 要映射的值
a1, a2 Float 区间的端点值
b1, b2 Float 区间的端点值

b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 )
x 从区间 [a1, a2] 到区间 [b1, b2] 的线性映射.

lerp( x, y, t ) : Float
x Float 起点
y Float 终点
t Float [0, 1] 内插因子

( 1 - t ) * x + t * y
线性插值.

isPowerOfTwo( n ) : Boolean
n Number 待检测的数

( n & ( n - 1 ) ) === 0 && n !== 0
n 是否为2的幂.

randInt( low, high ) : Integer
low, high Integer 区间的端点值

low + Math.floor( Math.random() * ( high - low + 1 ) )
在区间[low, high]的一个随机整数.

randFloat( low, high ) : Float
low, high Float 区间的端点值

low + Math.random() * ( high - low )
在区间[low, high]的一个随机浮点数.

randFloatSpread( range ) : Float
range Float 范围

range * ( 0.5 - Math.random() )
在区间[-range/2, range/2]的一个随机浮点数.

smoothstep( x, min, max ) : Float [0, 1]
x Float 被评估值
min Float 最小值, x小于它时, 函数返回0
max Float 最大值, x大于它时, 函数返回1

x = ( x - min ) / ( max - min )
x * x * ( 3 - 2 * x )
平滑插值. 详情

smootherstep( x, min, max ) : Float
x Float 被评估值
min Float 最小值, x小于它时, 函数返回0
max Float 最大值, x大于它时, 函数返回1

x = ( x - min ) / ( max - min )
x * x * x * ( x * ( x * 6 - 15 ) + 10 )
更平滑的插值. 详情