three.js Plane

2023-02-16 17:46 更新

在三維空間中無限延伸的二維平面,平面方程用單位長度的法向量和常數(shù)表示為海塞法向量Hessian normal form形式。

構造器(Constructor)

Plane( normal : Vector3, constant : Float )

normal - (可選參數(shù)) 定義單位長度的平面法向量Vector3。默認值為 (1, 0, 0)
constant - (可選參數(shù)) 從原點到平面的有符號距離。 默認值為 0.

屬性(Properties)

.isPlane : Boolean

只讀標志,用于檢查給定對象是否為平面類型。

.normal : Vector3

.constant : Float

方法(Methods)

.applyMatrix4 ( matrix : Matrix4, optionalNormalMatrix : Matrix3 ) : this

matrix - 要應用的四位矩陣(Matrix4)。
optionalNormalMatrix - (可選參數(shù)) 預先計算好的上述Matrix4參數(shù)的法線矩陣 Matrix3。

在平面上應用矩陣。矩陣必須是仿射齊次變換。
如果提供一個optionalNormalMatrix,可以這樣創(chuàng)建:

const optionalNormalMatrix = new THREE.Matrix3().getNormalMatrix( matrix );

.clone () : Plane

返回一個與當前平面有相同法線 normal,常量 constant 距離的平面。

.coplanarPoint ( target : Vector3 ) : Vector3

target — 結果會拷貝到該向量中。

返回一個共面點,通過原點的法向量在平面上投影算得。

.copy ( plane : Plane ) : this

拷貝給定平面,將其中的法線 normal,距離常量 constant屬性拷貝給該對象。

.distanceToPoint ( point : Vector3 ) : Float

返回點point到平面的有符號距離。

.distanceToSphere ( sphere : Sphere ) : Float

返回球面 sphere 的邊緣到平面的最短距離。

.equals ( plane : Plane ) : Boolean

檢查兩個平面是否相等。(法線 normal 以及常量 constant 都相同)。

.intersectLine ( line : Line3, target : Vector3 ) : Vector3

line - 檢測是否相交的三維幾何線段 Line3。
target — 結果將會寫入該向量中。

返回給定線段和平面的交點。如果不相交則返回null。如果線與平面共面,則返回該線段的起始點。

.intersectsBox ( box : Box3 ) : Boolean

box - 檢查是否相交的包圍盒 Box3。
確定該平面是否與給定3d包圍盒Box3相交。

.intersectsLine ( line : Line3 ) : Boolean

line - 檢查是否相交的三維線段 Line3。

測試線段是否與平面相交。

.intersectsSphere ( sphere : Sphere ) : Boolean

sphere - 檢查是否相交的球體 Sphere。

確定該平面是否與給定球體 Sphere 相交。

.negate () : this

將法向量與常量求反(乘以-1)。

.normalize () : this

歸一化法向量 normal ,并相應的調整常量 constant數(shù)值。

.projectPoint ( point : Vector3, target : Vector3 ) : Vector3

point - 需要投射到該平面的點。
target — 在該平面上離投射點最近的點。

將一個點point投射到該平面上。

.set ( normal : Vector3, constant : Float ) : this

normal - 單位長度的向量表示平面的法向量。
constant - 原點到平面有符號距離。默認值為 0。

設置平面 normal 的法線和常量 constant 屬性值。

.setComponents ( x : Float, y : Float, z : Float, w : Float ) : this

x - 單位長度法向量的x值。
y - 單位長度法向量的y值。
z - 單位長度法向量的z值。
w - 原點沿法向量到平面常量 constant 距離。

設置定義平面的各個變量。

.setFromCoplanarPoints ( a : Vector3, b : Vector3, c : Vector3 ) : this

a - 用于確定平面的第一個點。
b - 用于確定平面的第二個點。
c - 用于確定平面的第三個點。

根據(jù)給定的三個點確定平面。如果三個點共線將會拋出錯誤。通過右手螺旋規(guī)則確定(向量叉乘)法向量 normal。

.setFromNormalAndCoplanarPoint ( normal : Vector3, point : Vector3 ) : this

normal - 平面單位法向量
point - 平面上的點

通過參數(shù)提供的法線 normal 和 平面上的一個點 point 來設置該平面。

.translate ( offset : Vector3 ) : this

offset - 平移量

將平面平移給定向量大小,注意:這只會影響平面的常量不會影響平面的法向量。

源碼

src/math/Plane.js


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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號