2

我正在尝试开发一种算法来确定两个框(但我认为它适用于任何凸多面体)是否相交。我将使用它进行碰撞检测。

每个多面体的状态都表示为其质心的平移向量和一个方向矩阵(3x3 正交表示对象空间坐标)。

我的一般想法是取两个多面体的每个面,找出它的平面方程(通过应用多面体方向和平移分量),然后遍历另一个多面体的每个顶点,并确定它们是否都是在平面的同一侧,如果它们是,我确定这两个对象不相交。

至于碰撞检测部分,我会检测它们是否相交,如果它们相交,我会在它们接触的那一刻进行二分搜索,并在那个时刻通过找到最接近的另一个对象的顶点来尝试找到碰撞的顶点我之前找到的用来确定接触点的飞机。

我的问题是,这个算法是否正确,如果是,是不是矫枉过正?我可以以某种方式节省一些支票,或加快流程吗?

4

1 回答 1

1

我认为您的算法是正确的,并且与您将获得的一样有效。为了清楚起见,您需要检查两个多面体的每个面,如果您发现另一个多面体的每个顶点都位于无限平面的“外部”的任何情况,则没有相交。

对于性能:

1 个预先计算封闭球体,以便您可以进行初始“粗略”检查

2 预先计算所有向外的法线向量并通过旋转变换进行 - 应该比做一堆叉积便宜,

我认为找到相交的“点”可以使用相同的算法并假设相交和非相交状态之间的线性插值并寻求一个顶点恰好在一个平面上的解决方案。

于 2012-08-25T12:59:34.350 回答