three.js MathUtils

2023-02-16 17:46 更新

具有多個(gè)數(shù)學(xué)實(shí)用函數(shù)的對(duì)象。

函數(shù)(Functions)

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

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

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

.degToRad ( degrees : Float ) : Float

將度轉(zhuǎn)化為弧度。

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

n, m - 整型

計(jì)算 m % n 的歐幾里得模:

( ( n % m ) + m ) % m

.generateUUID ( ) : UUID

創(chuàng)建一個(gè)全局唯一標(biāo)識(shí)符 UUID。

.isPowerOfTwo ( n : Number ) : Boolean

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

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

x - 起始點(diǎn)
y - 終點(diǎn)
value - 介于起始點(diǎn)和終點(diǎn)的值

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

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

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

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

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

x - 當(dāng)前點(diǎn)
y - 目標(biāo)點(diǎn)
lambda - 較高的參數(shù) lambda 值會(huì)使運(yùn)動(dòng)更加突然,而較低的值會(huì)使運(yùn)動(dòng)更加平緩。
dt - 以秒為單位的增量時(shí)間

使用 dt 以類(lèi)似彈簧的方式從 x 向 y 平滑地插入一個(gè)數(shù)字,以保持與幀速率無(wú)關(guān)的運(yùn)動(dòng)。有關(guān)詳細(xì)信息,請(qǐng)參閱 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 — 函數(shù)將 pingpong 傳遞到的正值。默認(rèn)值為 1。

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

.ceilPowerOfTwo ( n : Number ) : Integer

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

.floorPowerOfTwo ( n : Number ) : Integer

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

.radToDeg ( radians : Float ) : Float

將弧度轉(zhuǎn)換為角度。

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

在區(qū)間 [low, high] 內(nèi)隨機(jī)一個(gè)浮點(diǎn)數(shù)。

.randFloatSpread ( range : Float ) : Float

在區(qū)間 [- range / 2, range / 2] 內(nèi)隨機(jī)一個(gè)浮點(diǎn)數(shù)。

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

在區(qū)間 [low, high] 內(nèi)隨機(jī)一個(gè)整數(shù)。

.seededRandom ( seed : Integer ) : Float

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

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

x - 根據(jù)其在最小值和最大值之間的位置來(lái)計(jì)算的值。
min - 任何x比最小值還小會(huì)返回0.
max - 任何x比最大值還大會(huì)返回1.

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

查看更多詳情請(qǐng)移步到 Smoothstep 。

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

x - 根據(jù)其在最小值和最大值之間的位置來(lái)計(jì)算的值。
min - 任何x比最小值還小會(huì)返回0.
max - 任何x比最大值還大會(huì)返回0.

返回一個(gè)0-1之間的值。它和smoothstep相同,但變動(dòng)更平緩。variation on smoothstep 在x=0和x=1處有0階和二階導(dǎo)數(shù)。

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

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

根據(jù) a、b、c、order 組成的歐拉角 intrinsic Proper Euler Angles 來(lái)設(shè)置四元數(shù) q。
按照 order 指定的軸旋轉(zhuǎn)順序:先旋轉(zhuǎn)角度 a,再旋轉(zhuǎn)角度 b,最后旋轉(zhuǎn)角度 c。角度以弧度為單位。

源碼

src/math/MathUtils.js


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)