three.js MathUtils

2023-02-16 17:46 更新

具有多個數學實用函數的對象。

函數(Functions)

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

value — 需要clamp處理的值。
min — 最小值。
max — 最大值。

限制數值value處于最小值min和最大值max之間。

.degToRad ( degrees : Float ) : Float

將度轉化為弧度。

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

n, m - 整型

計算 m % n 的歐幾里得模:

( ( n % m ) + m ) % m

.generateUUID ( ) : UUID

創(chuàng)建一個全局唯一標識符 UUID。

.isPowerOfTwo ( n : Number ) : Boolean

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

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

x - 起始點
y - 終點
value - 介于起始點和終點的值

返回參數 value 在起點 x 與終點 y 的閉區(qū)間 [0,1] 中的百分比。

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

x - 起始點。
y - 終點。
t - 閉區(qū)間 [0,1] 內的插值因子。

返回給定區(qū)間的線性插值linearly interpolated結果 - t = 0 將會返回 x 如果 t = 1 將會返回 y.

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

x - 當前點
y - 目標點
lambda - 較高的參數 lambda 值會使運動更加突然,而較低的值會使運動更加平緩。
dt - 以秒為單位的增量時間

使用 dt 以類似彈簧的方式從 x 向 y 平滑地插入一個數字,以保持與幀速率無關的運動。有關詳細信息,請參閱 Frame rate independent damping using lerp.

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

x — 用于映射的值。
a1 — A區(qū)間最小值。
a2 — A區(qū)間最大值。
b1 — B區(qū)間最小值。
b2 — B區(qū)間最大值。

x從范圍[a1, a2] 到范圍[b1, b2]的線性映射。

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

x — pingpong 的值
length — 函數將 pingpong 傳遞到的正值。默認值為 1。

返回一個介于 0 和 length : Float 之間的值。

.ceilPowerOfTwo ( n : Number ) : Integer

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

.floorPowerOfTwo ( n : Number ) : Integer

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

.radToDeg ( radians : Float ) : Float

將弧度轉換為角度。

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

在區(qū)間 [low, high] 內隨機一個浮點數。

.randFloatSpread ( range : Float ) : Float

在區(qū)間 [- range / 2, range / 2] 內隨機一個浮點數。

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

在區(qū)間 [low, high] 內隨機一個整數。

.seededRandom ( seed : Integer ) : Float

在區(qū)間 [0, 1] 中生成確定性的偽隨機浮點數。 整數種子是可選的。

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

x - 根據其在最小值和最大值之間的位置來計算的值。
min - 任何x比最小值還小會返回0.
max - 任何x比最大值還大會返回1.

返回0-1之間的值,該值表示x在最小值和最大值之間移動的百分比,但是當x接近最小值和最大值時,變化程度會平滑或減慢。

查看更多詳情請移步到 Smoothstep 。

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

x - 根據其在最小值和最大值之間的位置來計算的值。
min - 任何x比最小值還小會返回0.
max - 任何x比最大值還大會返回0.

返回一個0-1之間的值。它和smoothstep相同,但變動更平緩。variation on smoothstep 在x=0和x=1處有0階和二階導數。

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

q - 將被設置的的四元數。
a - 應用于第一個軸的旋轉,以弧度為單位。
b - 應用于第二個軸的旋轉,以弧度為單位。
c - 應用于第三個軸的旋轉,以弧度為單位。
order - 指定軸旋轉順序的字符串:'XYX', 'XZX', 'YXY', 'YZY', 'ZXZ', 或 'ZYZ'

根據 a、b、c、order 組成的歐拉角 intrinsic Proper Euler Angles 來設置四元數 q。
按照 order 指定的軸旋轉順序:先旋轉角度 a,再旋轉角度 b,最后旋轉角度 c。角度以弧度為單位。

源碼

src/math/MathUtils.js


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號