three.js Box2

2023-02-16 17:46 更新

表示二維空間中的一個(gè)軸對(duì)齊包圍盒(axis-aligned bounding box,AABB)。

構(gòu)造函數(shù)(Constructor)

Box2( min : Vector2, max : Vector2 )

min - (可選) Vector2 表示該盒子的下邊界(x, y)。默認(rèn)值為( + Infinity, + Infinity )。
max - (可選) Vector2 表示該盒子的上邊界(x, y)。默認(rèn)值為( - Infinity, - Infinity )。

創(chuàng)建一個(gè)介于最小和最大值之間的Box2。

屬性(Properties)

.min : Vector2

Vector2 表示該盒子的下邊界(x, y)。

默認(rèn)值為( + Infinity, + Infinity )。

.max : Vector2

Vector2 表示該盒子的上邊界(x, y)。

默認(rèn)值為( - Infinity, - Infinity )。

方法(Methods)

.clampPoint ( point : Vector2, target : Vector2 ) : Vector2

point - clamp 的位置 (Vector2)
target — 結(jié)果會(huì)被復(fù)制到該二維向量中。

在該盒子范圍內(nèi)夾緊(Clamps)point。

.clone () : Box2

返回一個(gè)新的Box2,其min和max與此盒子相同。

.containsBox ( box : Box2 ) : Boolean

box - 要檢查是否被包含的盒子。

如果盒子包含整個(gè)被檢查盒子,則返回true。如果兩者重疊,
也會(huì)返回true。

.containsPoint ( point : Vector2 ) : Boolean

point - 要檢查是否被包含的點(diǎn)Vector2。

如果指定的點(diǎn)(point)位于盒子的邊界內(nèi)或邊界上,則返回true。

.copy ( box : Box2 ) : this

將box的min 和 max復(fù)制到此盒子中。

.distanceToPoint ( point : Vector2 ) : Float

point - 要測(cè)量距離的點(diǎn)(Vector2)。

返回這個(gè)盒子的任何邊緣到指定點(diǎn)的距離。如果這個(gè)點(diǎn)(point)位于這個(gè)盒子里,距離將是0。

.equals ( box : Box2 ) : Boolean

box - 要對(duì)比的盒子

如果這個(gè)盒子和被對(duì)比盒子具有相同的上下邊界,則返回true。

.expandByPoint ( point : Vector2 ) : this

point - 應(yīng)該被盒子包含的點(diǎn)。

擴(kuò)展盒子的邊界來(lái)包含該點(diǎn)。

.expandByScalar ( scalar : Float ) : this

scalar - 盒子擴(kuò)展的距離。

在每個(gè)維度上擴(kuò)展參數(shù)scalar所指定的距離,如果為負(fù)數(shù),則盒子空間將收縮。

.expandByVector ( vector : Vector2 ) : this

vector - 按照該向量擴(kuò)展。

在每個(gè)維度中按vector的數(shù)值進(jìn)行擴(kuò)展。寬度在兩個(gè)方向上的擴(kuò)展將由vector的x分量確定, 高度在兩個(gè)方向上的擴(kuò)展則由y分量確定。

.getCenter ( target : Vector2 ) : Vector2

target — 結(jié)果將被復(fù)制到此二維向量中。

以二維向量形式返回盒子的中心點(diǎn)。

.getParameter ( point : Vector2, target : Vector2 ) : Vector2

point - 二維向量(Vector2).
target — 結(jié)果將被復(fù)制到此二維向量中。

返回一個(gè)點(diǎn)作為此盒子的寬度和高度的比例。

.getSize ( target : Vector2 ) : Vector2

target — 結(jié)果將被復(fù)制到此二維向量中。

返回此盒子的寬度和高度。

.intersect ( box : Box2 ) : this

box - 要相交的盒子。

返回兩者的相交后的盒子,并將相交后的盒子的上限設(shè)置為兩者的上限中的較小者,將下限設(shè)置為兩者的下限中的較大者。

.intersectsBox ( box : Box2 ) : Boolean

box - 用來(lái)檢查相交的盒子。

確定該盒子是否和其相交。

.isEmpty () : Boolean

如果這個(gè)盒子包含0個(gè)頂點(diǎn),則返回true。

請(qǐng)注意,一個(gè)下上邊界相等的的盒子仍然包括一個(gè)點(diǎn),一個(gè)兩個(gè)邊界共享的點(diǎn)。

.makeEmpty () : this

使此盒子為空。

.set ( min : Vector2, max : Vector2 ) : this

min - (必須) 表示該盒子的下邊界(x, y)。

max - (必須) 表示該盒子的上邊界(x, y)。

設(shè)置這個(gè)盒子的上下(x, y)的界限。
請(qǐng)注意,此方法僅復(fù)制給定對(duì)象的值。

.setFromCenterAndSize ( center : Vector2, size : Vector2 ) : this

center - 盒子所要設(shè)置的中心位置。 (Vector2).
size - 盒子所要設(shè)置的x和y尺寸 (Vector2).

使盒子的中心點(diǎn)位于center,并設(shè)置寬高為size中指定的值。

.setFromPoints ( points : Array ) : this

points - 點(diǎn)的集合,由這些點(diǎn)確定的空間將被盒子包圍。

設(shè)置這個(gè)盒子的上下邊界,來(lái)包含所有設(shè)置在points參數(shù)中的點(diǎn)。

.translate ( offset : Vector2 ) : this

offset - 偏移方向和距離。

添加 offset 到這個(gè)盒子的上下邊界,實(shí)際上在2D空間移動(dòng)這個(gè)盒子offset個(gè)單位。

.union ( box : Box2 ) : this

box - 將要與該盒子聯(lián)合的盒子

在box參數(shù)的上邊界和該盒子的上邊界之間取較大者,而對(duì)兩者的下邊界取較小者,這樣獲得一個(gè)新的較大的聯(lián)合盒子。

源碼(Source)

src/math/Box2.js


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

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)