【发布时间】:2021-05-14 17:06:39
【问题描述】:
对于上下文,我正在尝试解决 3D 物理引擎中的碰撞细节。以下是在两个凸形的分离平面上的二维投影中发生的。
我有两个三角形,我们称它们为 A 和 B。它们存储为一组 3 个点(例如 A1、A2、A3)。我已经知道这两个三角形重叠。如何确定大致位于重叠中心的点“P”?
我能想到的最好方法是尝试找到 6 条线的交点,然后,根据存在的交点,包括来自任一三角形的任意数量的点。选择的点以及交叉点可以形成一个多边形,然后我可以找到它的中心。 但是,我知道这将是大量的计算,并且考虑到这是在实时环境中使用的,我想找到一个更好的方法。
【问题讨论】:
-
如果你知道它们重叠,你知道交点吗?您需要创建一个重叠区域的多边形,然后找到它的质心。
-
@JohnAlexiou 不,我不知道。它们是作为 EPA 通行证的最后一步生成的,这意味着当沿碰撞法线投影时,minkowski 空间的原点位于组合三角形内;由于外壳是凸面的,这意味着当这些三角形投影到法线平面上时,它们也必须重叠。
-
根据分轴原理,如果将一个三角形的每个顶点的坐标代入另一个三角形的边方程,反之,就可以证明不存在交集。据此,我推测您无法使用少于六次的比较来解决您的问题,其中涉及一些 2x2 行列式。
-
你怎么知道三角形重叠?在得出这个结论的过程中,也许有一些有用的数据/属性可以重复使用以获得更快的解决方案。
标签: math collision-detection computational-geometry