包圍盒 碰撞檢測

2021-09-28 05:46:18 字數 910 閱讀 1426

製造幾何**中的碰撞檢測通常視為針對剛體物件間的碰撞檢測,這樣的話可以把非剛體即軟體的建模和變形演算法對碰撞檢測的影響減少到最小。常見成熟的基於包圍盒的碰撞檢測(box intersection test)演算法如:

1)沿座標軸的包圍盒aabb(axis-aligned bounding boxes)在碰撞檢測的研究歷史中使用得最久最廣, 乙個給定物件的aabb被定義為包含該物件且各邊平行於座標軸的最小的六面體。

aabb間的相交測試也比較簡單,兩個aabb相交當且僅當它們在三個座標軸上的投影區間均重疊。定義aabb的六個最大最小值分別確定了它在三個座標軸上的投影區間,因此aabb間的相交測試最多隻需要六次比較運算。

2)包圍球類似於aabb,也是簡單性好緊密性差的一類包圍盒,包圍球被定義為包含該物件的最小的球體,計算給定物件e的包圍球,首先需確定包圍球的球心c,再由球心與三個最大值座標所確定的點間的距離計算半徑r。包圍球的計算時間略多於aabb,但儲存乙個包圍球只需兩個浮點數。

3)方向包圍盒obb(oriented bounding box)是比較著名的乙個包圍盒型別。乙個給定物件的obb被定義為包含該物件且相對於座標軸方向任意的最小的長方體。obb最大特點是它的方向的任意性,這使得它可以根據被包圍物件的形狀特點盡可能緊密地包圍物件,但同時也使得它的相交測試變得複雜。 obb間的相交測試基於分離軸理論(separating axis test)。若兩個obb在一條軸線上(不一定是座標軸)上的投影不重疊,則這條軸稱為分離軸。若一對obb間存在一條分離軸,則可以判定這兩個obb不相交。對任何兩個不相交的凸三維多面體,其分離軸要麼垂直於任何乙個多面體的某乙個面,要麼同時垂直於每個多面體的某一條邊。因此,對一對obb,只需測試15條可能是分離軸的軸(每個obb的3個面方向再加上每個obb的3個邊方面的兩兩組合),只要找到一條這樣的分離軸,就可以判定這兩個obb是不相交的,如果這15條軸都不能將這兩個obb分離,則它們是相交的。

Sphere and AABB 包圍盒碰撞檢測應用

在遊戲開發中,經常會用到碰撞檢測的技術。而在其中,關於sphere 球體 和aabb 軸向包圍盒 的碰撞尤為常見。今天就來記錄下,如何進行這兩個基本幾何體的碰撞檢測。進行sphere和aabb包圍體的碰撞,實際上就是以下的兩個步驟 1.在aabb盒上,找到距離sphere的圓心距離最近的點 p cl...

包圍球與包圍盒的碰撞檢測

碰撞檢測演算法的引申問題 盒子和盒子的碰撞,或者球和球的碰撞已經有太多的討 章,這裡不說 這裡只說盒子和球的碰撞 二維情況 問題描述 平面任意的矩形和乙個圓是否相交的判定 分析 圓和矩形相交發生情況下,球心在什麼區域呢?區域的形狀是個圓角矩形,如下示意圖 綠色為矩形的部分,當圓的圓心衛浴藍色和綠色的...

碰撞檢測 膠囊體碰撞檢測

膠囊體 給定一條線段l,所有道l的距離為r的點的集合。由定義可知,膠囊體由半徑r和線段l標識。檢測兩個膠囊體是否發生碰撞,即檢測兩條線段l1 l2的最短距離d是否大於l1 l2的半徑r1 r2之和,d r1 r2 則未碰撞,否則發生碰撞。設線段l1端點為a1 a2,線段l2端點為b1 b2,號表示兩...