对齐两个不同多边形的边

问题描述

我有两个不同的多边形。如果第一个多边形的边缘和第二个多边形的边缘之间的距离小于指定的阈值,我想将第一个多边形的边缘与第二个多边形边缘对齐。 只需要考虑平行边。

所以目前我的做法是

Image link for what i intend to do

  1. 我遍历第一个多边形和第二个多边形的边,找到第一个多边形的边和第二个多边形的边,它们彼此平行。
  2. 如果它们的距离小于指定的阈值,我将第一个多边形的边缘点移动相应的距离值。

目前,它适用于简单的多边形。但是对于复杂的多边形,当我遵循上述方法时,它会导致自相交多边形。

那么有没有更好的算法可以将一个多边形的边与另一个对齐?

解决方法

正如@MBo 所说,很大程度上取决于您的多边形是否为凸面(无凹痕)。 如果你有任意的非凸多边形,那么这个问题就很困难,需要 决定什么是理想的“答案”。

如果你有P1和P2都是凸的,那么计算一致性似乎是可行的 在边之间,确定最近的两条边 e1 和 e2。有各种细分市场措施;也许 Hausdorff 距离是最大的 合适。

然后一旦识别出 e1 和 e2,您就可以重新定位 P2,使 e2 与 e1 匹配。