Skip to content

MathUtils

MathUtilsTHREE类中的一个对象,中具有多个数学实用函数

方法

clamp

限制数值value处于最小值min和最大值max之间。

js
clamp(value: Float, min: Float, max: Float): Float

参数:

  • value:需要clamp处理的值。
  • min:最小值。
  • max:最大值。

返回值:返回处理后的value

degToRad

将度转化为弧度。

js
degToRad(degrees: Float): Float

参数:

  • degrees:一个角度

返回值:返回转化后的弧度

euclideanModulo

计算 m % n 的欧几里得模:( ( n % m ) + m ) % m

js
euclideanModulo(n: Integer, m: Integer): Integer

参数:

  • n, m - 整型

返回值: m % n 的欧几里得模

generateUUID

创建一个全局唯一标识符 UUID

js
generateUUID(): UUID

返回值:返回一个UUID

isPowerOfTwo

如果 n 是2的幂,返回true。

js
isPowerOfTwo(n: Number): Boolean

参数:

  • n:一个整数

返回值:返回传入的值是否为2的幂

inverseLerp

返回参数 value 在起点 x 与终点 y 的闭区间 [0,1] 中的百分比。

js
inverseLerp(x: Float, y: Float, value: Float): Float

参数:

  • x - 起始点
  • y - 终点
  • value - 介于起始点和终点的值

返回值: value 在起点 x 与终点 y 的闭区间 [0,1] 中的百分比。

lerp

返回给定区间的线性插值linearly interpolated结果 - t = 0 将会返回 x 如果 t = 1 将会返回 y.

js
lerp(x: Float, y: Float, t: Float): Float

参数:

  • x - 起始点。
  • y - 终点。
  • t - 闭区间 [0,1] 内的插值因子。

返回值:返回给定区间的线性插值

damp

使用 dt 以类似弹簧的方式从 x 向 y 平滑地插入一个数字,以保持与帧速率无关的运动。有关详细信息,请参阅 Frame rate independent damping using lerp.

js
damp(x: Float, y: Float, lambda: Float, dt: Float): Float

参数:

  • x:当前点
  • y:目标点
  • lambda:较高的参数 lambda 值会使运动更加突然,而较低的值会使运动更加平缓。
  • d:以秒为单位的增量时间

返回值:

mapLinear

从范围[a1, a2] 到范围[b1, b2]的线性映射。

js
mapLinear(x: Float, a1: Float, a2: Float, b1: Float, b2: Float): Float

参数:

  • x:用于映射的值。
  • a1:A区间最小值。
  • a2:A区间最大值。
  • b1:B区间最小值。
  • b2:B区间最大值。

返回值:返回从范围[a1, a2] 到范围[b1, b2]的线性映射。

pingpong

返回一个介于 0 和 length : Float 之间的值。

js
pingpong(x: Float, length: Float): Float

参数:

  • x:pingpong 的值
  • length:函数将 pingpong 传递到的正值。默认值为 1。

返回值:返回一个介于 0 和 length : Float 之间的值。

ceilPowerOfTwo

返回大于等于 n 的2的最小次幂。

js
ceilPowerOfTwo(n: Number): Integer

参数:

  • n:一个数值

返回值:返回大于等于 n 的2的最小次幂。

floorPowerOfTwo

返回小于等于 n 的2的最大幂。

js
floorPowerOfTwo(n: Number): Integer

参数:

  • n:一个数值

返回值:返回小于等于 n 的2的最大幂。

radToDeg

将弧度转换为角度。

js
radToDeg(radians: Float): Float

参数:

  • radians:一个弧度

返回值:返回转化后的角度值

randFloat

在区间 [low, high] 内随机一个浮点数。

js
randFloat(low: Float, high: Float): Float

参数:

  • low:区间最小值,包含low
  • high:区间最大值,包含high

返回值:返回[low, high] 内随机一个浮点数。

randFloatSpread

在区间 [- range / 2, range / 2] 内随机一个浮点数。

js
randFloatSpread(range: Float): Float

参数:

  • range:区间值

返回值:返回 [- range / 2, range / 2] 内随机一个浮点数。

randInt

在区间 [low, high] 内随机一个整数。

js
randInt(low: Integer, high: Integer): Integer

参数:

  • low:区间最小值,包含low
  • high:区间最大值,包含high

返回值:在区间 [low, high] 内随机一个整数。

seededRandom

在区间 [0, 1] 中生成确定性的伪随机浮点数。 整数种子是可选的。

js
seededRandom(seed: Integer): Float

参数:

  • seed:整数种子

返回值:返回区间 [0, 1] 中生成确定性的伪随机浮点数

smoothstep

返回0-1之间的值,该值表示x在最小值和最大值之间移动的百分比,但是当x接近最小值和最大值时,变化程度会平滑或减慢。

js
smoothstep(x: Float, min: Float, max: Float): Float

参数:

  • x:根据其在最小值和最大值之间的位置来计算的值。
  • min:任何x比最小值还小会返回0.
  • max:任何x比最大值还大会返回1.

返回值:返回0-1之间的值

smootherstep

返回一个0-1之间的值。它和smoothstep相同,但变动更平缓。variation on smoothstep 在x=0和x=1处有0阶和二阶导数。

js
smootherstep(x : Float, min: Float, max: Float): Float

参数:

  • x:根据其在最小值和最大值之间的位置来计算的值。
  • min:任何x比最小值还小会返回0.
  • max:任何x比最大值还大会返回0.

返回值:返回一个0-1之间的值

setQuaternionFromProperEuler

根据 a、b、c、order 组成的欧拉角 intrinsic Proper Euler Angles 来设置四元数 q。 按照 order 指定的轴旋转顺序:先旋转角度 a,再旋转角度 b,最后旋转角度 c。角度以弧度为单位。

js
setQuaternionFromProperEuler(
    q: Quaternion, 
    a: Float,
    b: Float, 
    c: Float,
    order: String
): undefined

参数:

  • q:将被设置的的四元数。
  • a:应用于第一个轴的旋转,以弧度为单位。
  • b:应用于第二个轴的旋转,以弧度为单位。
  • c:应用于第三个轴的旋转,以弧度为单位。
  • order:指定轴旋转顺序的字符串:'XYX', 'XZX', 'YXY', 'YZY', 'ZXZ', 或 'ZYZ'

MIT Licensed