前
GJK(Gilbert–Johnson–Keerthi distance algorithm)算法被游戏引擎中常常用于求凸面物体的碰撞检测,GJK算法的核心是利用了闵可夫斯基差(Minkowski difference )的特性,即:
1.如果两个凸包相交,那么他们的闵可夫斯基差必然包含坐标原点;
2.如果两个凸包的闵可夫斯基差不包含坐标原点,那么这个差值到原点的最近距离就代表了这两个凸包的最近距离。
注意:本文不包含GJK算法的详细解释,而是作为GJK算法的预先铺垫,只是作为介绍闵可夫斯基差如何进行判断凸面体碰撞的。
闵可夫斯基差、闵可夫斯基和:
在几何学中,欧氏空间中两组位置向量A和B的闵可夫斯基和是通过将A中的每个向量与B中的每个向量相加而形成的。
闵可夫斯基差:
其主要应用如下:
- 碰撞检测
- 运动规划
- 聚合理论
闵可夫斯基和:
其主要应用如下:
- 证明常宽图形周长的Barbier定理
- 证明关于格点图形的闵可夫斯基定理
- 数学形态学
一维理解
2 条评论
赵姐商业 · 2023年5月4日 下午3:44
你写得非常清晰明了,让我很容易理解你的观点。
Mustenaka · 2023年5月5日 下午3:47
本来是工作用到的这个算法,然后没有写完,有机会一定补