凸多边形之间的Hausdorff距离

时间:2012-06-08 10:44:32

标签: python algorithm computational-geometry

我有兴趣计算由它们的顶点定义的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感兴趣,并且可以使用任何预编程的解决方案。

1 个答案:

答案 0 :(得分:2)

对于凸多边形,d(A, B)是从A的顶点到B中任意点的距离的最大值。因此,如果可以计算从任意点到凸多边形的距离,则Hausdorff距离不太难计算。

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

您的其他查询的答案是否定的。举个例子,让A和B都是以原点为中心的2x2平方。将A分成4个1x1的正方形。每个A i 到B的Hausdorff距离为sqrt(2),但从A到B的距离为0。

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

由于两者都是有限的闭合形状,因此它们是紧凑的。从紧凑性来看,p中的A点必须尽可能远离B。从紧凑性来看,q中必须存在与B尽可能接近的A点。

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

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

显然p不能成为内部点,因为如果是,那么继续沿着qp的光线,你会在A中找到更远的点从B背后的平面,与p的定义相矛盾。如果pA的顶点,则结果很简单。因此,唯一有趣的情况是p位于A的边界上,但不是顶点。

如果是这样,那么p就在表面上。如果那个表面与我们构造的平面不平行,那么就很容易沿着那个表面移动,远离我们后面有B的平面,并找到比B更远的点而不是{{} 1}}。因此,该表面必须与该平面平行。由于p是有限的,因此该表面必须在某处的顶点终止。那些顶点与该平面的距离与A相同,因此至少与p的距离B相同。因此,p至少存在一个尽可能远离A的顶点。

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

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