理解AABB包圍盒演算法

2021-06-04 23:50:02 字數 788 閱讀 2622

這兩天在弄引擎的碰撞檢測模組,弄的糾結死,資料出奇的少,大牛們的**又不加注釋,唉。

1.aabb包圍盒由乙個max座標和乙個min座標組成。可以看成乙個點集。

下面這段**是關於兩個包圍盒碰撞的檢測,看成點集的話很好理解

bool

chetouch(

const

aabb

&aabb1, 

const

aabb

&aabb2)

else}

複製**

2.關於aabb的生成

圓形很好弄,三角形和長方形比較類似,這裡列出我**中box類的aabb生成函式

一點注釋:m_world是box類的四行三列的矩陣,前三行是旋轉的,後一行trans表示box中心的座標

void

box::updateaabb()

複製**

咋一看可能有些理解難度,可是如果把math::abs這個去掉,你會驚奇的發現這個就是乙個向量的旋轉變換

這樣,加上了math::abs,其實也很簡單,畫畫圖就知道了,這樣能確保其沒有方向性

附上兩張圖,圖上的數字表示的是藍線的頂點據頂面的距離,剩下的***。

分類: 

圖形學演算法

AABB包圍盒 OBB包圍盒 包圍球的比較

1 aabb 包圍盒 aabb 包圍盒是與座標軸對齊的包圍盒,簡單性好,緊密性較差 尤其對斜對角方向放置的瘦長形物件,採用aabb,將留下很大的邊角空隙,導致大量沒必要的包圍盒相交測試 當物體旋轉之後需對aabb 進行同樣的旋轉並更新 當物體變形之後只需對變形了的基本幾何元素對應的包圍盒重新計算 然...

AABB包圍盒 OBB包圍盒 包圍球的比較

1 aabb 包圍盒 aabb 包圍盒是與座標軸對齊的包圍盒,簡單性好,緊密性較差 尤其對斜對角方向放置的瘦長形物件,採用aabb,將留下非常大的邊角空隙,導致大量不是必需的包圍盒相交測試 當物體旋轉之後需對aabb 進行相同的旋轉並更新 當物體變形之後僅僅需對變形了的基本幾何元素相應的包圍盒又一次...

光線與包圍盒(AABB)的相交檢測演算法

侵刪 這裡介紹兩種演算法,第一種比較容易理解 下面是cocos2dx中實現ray aabb相交 碰撞 檢測的演算法,說明看注釋 cpp view plain copy print bool ray intersects const aabb aabb const 若射線沿y軸方向有分量 判斷是否與包...