检查凸实体是否完全位于另一个凸实体内部的最快方法是什么



我有两个不同的凸对象,我需要检查关于它们位置的三种不同状态:

  1. 固体没有碰撞
  2. 固体部分碰撞
  3. 其中一个固体完全在另一个固体内部

我使用GJK算法来检查实体是否发生碰撞,从而消除1状态。现在的问题是,GJK无法判断我是发生了部分碰撞,还是其中一个物体完全在另一个物体内部。检查第三种状态的最快方法是什么?

  1. 为两个对象创建"轴对齐"边界框(AABB)。
    • 如果它们(AABB)没有碰撞,则表示车身在外侧/没有碰撞
  2. 如果AABB这样做:
    • 使一个实体的所有面/边与其他实体的面/边相交。(对于每个人脸对等,您可以再次使用AABB消除非碰撞)
  3. 如果没有别的,它们就是一个在另一个之中

下面的演示是一个很好的资源。我推荐阅读:http://www.sccg.sk/~ durikovic/classes/CGAnim/ca10_lesson04.pdf

建立第一个实体所有面的定向平面方程(每个面取三个顶点),并检查第二个实体的所有顶点是否位于平面的正侧。

对于N个面和M个顶点,需要时间O(N.M)。

相关内容

  • 没有找到相关文章

最新更新