船体和箱子之间的最近距离

时间:2012-03-30 07:12:22

标签: geometry collision-detection

找到凸包和轴对齐框之间的最近距离的最佳方法是什么?最近距离是指船体和箱子上彼此最接近的一对点。我们可以假设我们知道船体和箱子不相交。

船体由面,顶点给出,如果需要,我可以对面进行三角测量。

2 个答案:

答案 0 :(得分:5)

这里的论文给出了一种算法,可以找到两个凸包之间最近的一对。 http://realtimecollisiondetection.net/pubs/SIGGRAPH04_Ericson_GJK_notes.pdf

有一段时间,我认为可能是AABB会使这种算法变得不必要的船体之一。不幸的是,我没有发现这是真的。

这个算法背后的想法是你采用两个船体的Minkowski差异。最接近的一对将是最接近原点的Minkowski差异中的一个点。 Cartheodory定理说,在d维空间中,你只需要d + 1个点来表示船体中的一个点。所以基本上你选择d + 1大小的minkowski差异集并找到它们与原点的最近距离。最靠近原点的点是通过迭代算法找到的。

答案 1 :(得分:0)

对于箱子(或任何其他凸起物体)内的船体情况:

如果它们不相交,则船体中的最近点将是船体的顶点,而不是中间的一个面。

简单地通过船体的所有顶点迭代并计算到箱子两侧的距离将让您找到一对点(船体的顶点+箱子面上的点)。请注意,船体的一面与箱子的一个面平行,您将在同一距离内获得多对。

箱外的船体:

对包含船体或箱子边缘的点,并指向第二个物体。迭代船体和箱子的所有边缘并计算到另一个物体的所有面的距离看起来像一种方法,但应该存在更好的方法。