勵志

勵志人生知識庫

gjk算法

GJK算法(Gilbert-Johnson-Keerthi算法)是一種用於計算兩個凸體之間最近距離的疊代算法,主要用於碰撞檢測。它通過構建和更新一個「單純形」(一個凸多面體),並檢查這個單純形是否包含原點來判斷兩個凸體是否相交。

GJK算法的基本步驟如下:

定義一個初始方向和初始單純形(通常是一個點或線段)。

在這個方向上,對兩個凸體使用「support」函式來找到最遠的點。

使用找到的點來更新單純形。

檢查單純形是否包含原點。如果是,則兩個凸體相交;否則,它們不相交。

GJK算法的效率和收斂速度非常快,特別是在處理三維空間中的凸多面體時。它也被推廣到n維空間中求凸包之間的距離,常用於二維平面上兩個凸多邊形的距離計算。