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

时间:2014-09-03 21:08:07

标签: geometry collision-detection linear-algebra computational-geometry

我有两个不同的凸面物体,我需要检查三个不同的状态:

  1. 固体没有碰撞
  2. 固体部分碰撞
  3. 其中一个固体完全在另一个
  4. 我正在使用GJK算法来检查固体是否发生碰撞,从而消除了1状态。现在的问题是,GJK无法判断我是否发生了部分碰撞,或者其中一个物体是否完全位于另一个物体内部。检查第三种状态的最快方法是什么?

2 个答案:

答案 0 :(得分:1)

  1. 为两个对象创建AXIS对齐的边界框(AABB)。
    • 如果他们(AABB的)没有发生冲突,那么这些尸体就会在外面/不会发生碰撞。
  2. 如果AABB的话:
    • 将其中一个面/边缘与其他正面/边相交。(您可以再次消除AABB的非碰撞,如上所述,每个面对面等)
  3. 如果不出意外,他们就是另一个。
  4. 以下介绍是一个非常好的资源。我建议阅读:http://www.sccg.sk/~durikovic/classes/CGAnim/ca10_lesson04.pdf

答案 1 :(得分:0)

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

N面和M顶点需要时间O(N.M)。