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

Geometry 船体和箱体之间的最近距离,geometry,collision-detection,Geometry,Collision Detection,找到凸面外壳和轴对齐长方体之间最近距离的最佳方法是什么?我所说的最近距离是指船体和箱体上彼此最接近的一对点。我们可以假设我们知道船体和箱子不相交 外壳由面和顶点组成,如果需要,我可以对这些面进行三角剖分。对于盒子(或任何其他凸面对象)内的外壳: 如果它们不相交,则外壳中最近的点将是外壳的顶点,而不是面的中间 简单地遍历外壳的所有顶点并计算到长方体每一侧的距离,就可以找到一对点(外壳顶点+长方体面上的点)。请注意,如果外壳的一个面与长方体的一个面平行,则在同一距离处将获得多个面对 盒子外的外壳:

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


外壳由面和顶点组成,如果需要,我可以对这些面进行三角剖分。

对于盒子(或任何其他凸面对象)内的外壳:

如果它们不相交,则外壳中最近的点将是外壳的顶点,而不是面的中间

简单地遍历外壳的所有顶点并计算到长方体每一侧的距离,就可以找到一对点(外壳顶点+长方体面上的点)。请注意,如果外壳的一个面与长方体的一个面平行,则在同一距离处将获得多个面对

盒子外的外壳:


该对包含外壳或长方体边缘的点和第二个对象上的点。迭代外壳和长方体的所有边并计算到其他对象所有面的距离看起来像是一种方法,但应该存在更好的方法。

本文给出了一种在两个凸面外壳之间找到最近对的算法

有一段时间,我认为可能是其中一个外壳是AABB会使这个算法不必要。不幸的是,我没有发现这是真的


这个算法背后的思想是取两个外壳的Minkowski差。最接近的一对将是该闵可夫斯基差中最接近原点的点。Cartheodory定理说,在d维空间中,只需要d+1点就可以表示船体中的一个点。所以基本上你选择d+1大小的minkowski差集,然后找到它们离原点最近的距离。最接近原点的点是通过迭代算法找到的。

不这样认为。想象一个AABB和另一个凸面外壳,它是一个定向的长方体,其面最靠近长方体的一个角。在这种情况下,最接近的一对是长方体的角和外壳面上的一个点。我认为最接近的一对总是有一个长方体顶点或外壳顶点。然后,一个可能的解决方案是首先在长方体顶点上迭代,并找到与外壳面最近的距离。然后在外壳顶点上迭代,并找到离长方体面最近的距离。不确定它是否错过了一个可能性。不知怎的,我只考虑了盒子里的船体。如果长方体不包含外壳,则说明该长方体的一个顶点可能位于该对中。一对中只有一个点必须是一个顶点——想象一下巨大的盒子,盒子的正面中间有一个小小的外壳。所以,是的,你的建议更一般,看起来更正确。我收回我的陈述。想象一下,一个巨大的盒子和一个微小的船体以一定角度越过边缘。最接近的一对应该是边缘上的一个点和船体表面上的一个点。我已经根据你的评论更新了答案,但看起来是时候买本书了:)