【问题标题】:Hausdorff Distance Between Convex Polygons凸多边形之间的豪斯多夫距离
【发布时间】:2012-06-13 01:45:02
【问题描述】:

我有兴趣计算由它们的顶点定义的 2 个多边形(特别是几乎是矩形的四边形)之间的 Hausdorff 距离。它们可能重叠。

回想一下 $d_H(A,B) = \max(d(A,B), d(B,A))$ 其中 $d$ 是 Hausdorff 半度量 $d(A,B) = \sup_{a\in A}\inf_{b\in B}d(a,b)$.

给定一个有限的不相交覆盖 $A$, ${A_i}$, $d(A,B)=\max{d(A_i,B)}$,对吗?其推论是 $d(A,B)=d(A\setminus B,B)$。

我找到了 Atallah 1 (PDF) 的一篇论文。我对使用 Python 工作很感兴趣,并且愿意接受任何预编程的解决方案。

【问题讨论】:

  • 在 Math.SE 上你可能会得到更好的运气(尤其是证明部分)
  • 我也在那里发过帖子,但是那里没有太多算法的东西。
  • 删除类乳胶格式...
  • 几年后标准 Shapely 库有一个很好的实现,请在此处查看答案:stackoverflow.com/questions/46259590/…

标签: python algorithm computational-geometry


【解决方案1】:

在凸多边形的情况下,d(A, B) 是从A 的顶点到B 中任意点的距离的最大值。因此,如果可以计算任意点到凸多边形的距离,豪斯多夫距离并不难计算。

要计算点到凸多边形的距离,首先必须测试该点是否在多边形内部(如果是,则距离为 0),如果不是,则找到到任何边界的最小距离线段。

您的另一个问题的答案是否定的。例如,让 A 和 B 都是以原点为中心的同一个 2x2 正方形。将 A 划分为 4 个 1x1 方格。每个Ai到B的Hausdorff距离为sqrt(2),但A到B的距离为0。

更新:关于顶点的声明并不是很明显,因此我将绘制一个在任何有限维数上都很好的证明。我试图证明的结果是,在计算具有多边形和B 凸面的d(A, B) 时,只需找到从A 的顶点到B 的距离即可。 (B 中最近的点可能不是顶点,但A 中最远的点之一必须是顶点。)

由于两者都是有限的封闭形状,它们是紧凑的。从紧凑性来看,A 中一定存在一个点p,它离B 越远越好。从紧凑性来看,B 中一定存在一个点q,它与A 尽可能接近。

仅当AB 是同一个多边形时,该距离才为0,在这种情况下,很明显我们在A 的顶点处实现了该距离。因此,不失一般性,我们可以假设pq 之间存在正距离。

绘制与q 相接触的平面(更高维度,某种超平面),该平面垂直于从pq 的线。 B 中的任何点都可以穿过这个平面吗?好吧,如果有一个,比如说r,那么从qr 的线段上的每个点都必须在B 中,因为B 是凸的。但是很容易证明,这条线段上一定有一个点比q更接近p,这与q的定义相矛盾。因此B 无法穿越这个平面。

显然p 不可能是内点,因为如果是内点,那么继续沿着从qp 的射线,你会发现A 中的点离B 所在的平面更远限制在后面,与p 的定义相矛盾。如果pA 的一个顶点,那么结果很简单。因此,唯一有趣的情况是pA 的边界上但不是顶点。

如果是这样,那么p 在表面上。如果该表面不平行于我们构建的平面,则很容易沿着该表面行进,远离我们在B 后面界定的平面,并找到距离Bp 更远的点。因此,该表面必须平行于该平面。由于A 是有限的,因此该曲面必须在某个顶点处终止。这些顶点与该平面的距离与p 的距离相同,因此与B 的距离至少与p 的距离一样远。因此,至少存在一个A 的顶点,该顶点距离B 越远越好。

这就是为什么找到从多边形的顶点到另一个多边形的距离的最大值就足够了。

(我将构建一对带有q 的多边形而不是顶点作为读者的有趣练习。)

【讨论】:

  • 如果两个形状相交,最大距离一定是顶点是否仍然正确?
  • @AlexChamberlain 是的。我更新了帖子,其中包含适用于任意数量维度的证明草图,即使形状相交也是如此。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-15
  • 1970-01-01
  • 1970-01-01
  • 2019-09-28
  • 2011-07-03
  • 2017-01-08
  • 2020-03-10
相关资源
最近更新 更多