Geometry 如何找到一组任意放置的非重叠矩形的自然边界多边形?

Geometry 如何找到一组任意放置的非重叠矩形的自然边界多边形?,geometry,2d,polygon,Geometry,2d,Polygon,给定一组任意放置、不重叠的矩形;我怎样才能找到一个多边形,它代表构成矩形的点周围的自然边界?举例说明: 我怎样才能找到绿线或蓝线?我尝试了以下几点,但没有成功: 使用寻路功能行走。我努力寻找一个有意义的启发方法 使用距离阈值行走,并根据前两点矢量的角度选择下一步(例如,始终向右转弯)。这有点有效,但有很多奇怪的边缘案例没有 从左、上、右和最底点的初始菱形开始按程序构建多边形。这个想法是检测一个点是否已经在polgyon内部,在这种情况下忽略它,但是当我需要插入时,我不知道如何确定插入位置 我

给定一组任意放置、不重叠的矩形;我怎样才能找到一个多边形,它代表构成矩形的点周围的自然边界?举例说明:

我怎样才能找到绿线或蓝线?我尝试了以下几点,但没有成功:

  • 使用寻路功能行走。我努力寻找一个有意义的启发方法
  • 使用距离阈值行走,并根据前两点矢量的角度选择下一步(例如,始终向右转弯)。这有点有效,但有很多奇怪的边缘案例没有
  • 从左、上、右和最底点的初始菱形开始按程序构建多边形。这个想法是检测一个点是否已经在polgyon内部,在这种情况下忽略它,但是当我需要插入时,我不知道如何确定插入位置

我不确定我是否遗漏了一些明显的东西,或者这是一个比我最初预期的更难的问题。

这里有一个启发。计算船体的H1 矩形。现在计算外壳H2 不在H1上的矩形角的。 现在有两个嵌套的凸面外壳。 考虑移动H1的边E H2的顶点v。 一些这样的举措可以被排除在外,因为这两项新举措 边与矩形相交。选择接受最小的 由e和v组成的三角形的高度, 如下图所示。



找到所有顶点的凸包怎么样?甚至是Delaunay三角测量。一旦有了它,就可以进行一些改进,比如用矩形中的两条边替换外壳中的一条边。请注意,这些改进可能仅取决于盒子的设置。嗨-谢谢。。。凸面外壳是我正在寻找的(我只是不知道它的名字),我实际上已经通过使用上面第3点中的技术做到了这一点。我首先使用“从多边形中心进一步”对点进行排序,剔除任何包含的点,然后找到距集合中下一点最近的线段,并在该线段的点之间插入。我不确定这是否有效,但它确实有效。我会把它贴出来作为答案,因为没有人有更好的技巧。