對於這個問題的長度,我表示歉意,並且對任何通過這個問題閱讀的人給予先發制人的感謝!從二維到三維的GJK碰撞檢測實施
所以我花了最近幾天去GJK算法。我瞭解它背後的一般概念,並且瞭解它在2D中實現的大部分細節,這要歸功於William Bittle在http://www.codezealot.org/archives/88上的精彩文章。
我已經在他自己的C++項目中實現了他的僞代碼(發現在文章的最後),但是我想做一個3D實現。我的弱點來到使用點產品測試voronoi區域和tripleProducts得到perpandicular線。但我試圖更多地閱讀。
我的問題歸結爲containsOrigin函數。我很難想象並計算z軸添加的新voronoi區域。我似乎無法圍繞如何確定哪些區域包含原點。我假設我必須說明4個問題,每個問題都從構成四面體單面的4個面的三角形平面延伸出來。如果原點不在這些區域的任何一個區域內,那麼它就會被包含,並且我們會發生碰撞。
如何測試它是否包含在特定的voronoi區域/哪個三角形面朝着原點方向?
當前的2D算法檢查是否有三角形,如果不是,則單純形是一條線並找到第三個點。我假設3D算法檢查是否有四面體,如果沒有,那麼它將檢查一個三角形,如果它是真的,那麼它將找到第四個點來製作一個四面體(我將如何得到這個?使用法線方向起源?)。如果我沒有製作三角形,它會找到第三個點來製作一個三角形(我仍然使用三維產品來製作2D中的圖像嗎?)。
任何建議,大綱,資源,代碼增補,評論都非常令人滿意。