GJK(Gilbert–Johnson–Keerthi distance algorithm)算法被游戏引擎中常常用于求凸面物体的碰撞检测,GJK算法的核心是利用了闵可夫斯基差(Minkowski difference )的特性,即:

1.如果两个凸包相交,那么他们的闵可夫斯基差必然包含坐标原点;

2.如果两个凸包的闵可夫斯基差不包含坐标原点,那么这个差值到原点的最近距离就代表了这两个凸包的最近距离。

注意:本文不包含GJK算法的详细解释,而是作为GJK算法的预先铺垫,只是作为介绍闵可夫斯基差如何进行判断凸面体碰撞的。

闵可夫斯基差、闵可夫斯基和:

在几何学中,欧氏空间中两组位置向量A和B的闵可夫斯基和是通过将A中的每个向量与B中的每个向量相加而形成的。

闵可夫斯基差:

其主要应用如下:

  1. 碰撞检测
  2. 运动规划
  3. 聚合理论

闵可夫斯基和:

其主要应用如下:

  1. 证明常宽图形周长的Barbier定理
  2. 证明关于格点图形的闵可夫斯基定理
  3. 数学形态学

一维理解

 


2 条评论

赵姐商业 · 2023年5月4日 下午3:44

你写得非常清晰明了,让我很容易理解你的观点。

    Mustenaka · 2023年5月5日 下午3:47

    本来是工作用到的这个算法,然后没有写完,有机会一定补

发表回复

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用 * 标注