【问题标题】:Finding the outline of union of rectangles that compose polygon找到组成多边形的矩形联合的轮廓
【发布时间】:2020-07-16 07:17:01
【问题描述】:

提供的是由对角矩形上的点定义的瓦片列表(大小不同的矩形),即(x_left_top, y_left_top) ,(x_bottom_right, y_bottom_right)等数据列表。

瓷砖组成一个更大的多边形,目的是找到这个多边形的边界。 矩形可以重叠但只有一点点(我不知道如何定义,附图)。

所有多边形: [所有多边形][1]

重叠示例

另一个例子

我非常感谢任何算法的想法来找到多边形的边缘以便能够绘制它的边界。 最好的祝福, 加仑

【问题讨论】:

标签: algorithm union polygon tiles rectangles


【解决方案1】:

这是一个没有实现细节的通用算法的概要:所有矩形按其左边缘升序排序(每个 x 坐标与矩形的左垂直线相关联)。我们的“扫描线”将是一条向右移动的垂直线。

当我们扫描时,保持一个具有当前垂直间隔的结构,其中一些可能由多个矩形边组成(例如,B 和 C)。当我们遇到一个矩形的左边缘时,我们将它添加到当前间隔,并在需要时通过适当地扩展或添加来更新它们。当我们遇到矩形的右边缘时,我们再次更新当前区间,从当前结构中删除部分或整个区间。每一次这样的相遇都可能揭示更多的垂直线,这些线是周边的一部分(我们追求的结果)。一个棘手的部分是确定哪些边缘部分被现有间隔隐藏,因此与周边无关。第二次扫描,比如用一条水平线自上而下,可以为我们提供周界的水平线。

 sweep-line ---->
   |
   | +------+
   | |A     |
   | |   +------+
   | |   |B |   |
   | +------+   |
   |     |      |
   |     +---+--+
   |     |C  |
   |     |   |
   |     +---+

【讨论】:

    猜你喜欢
    • 2014-11-24
    • 1970-01-01
    • 2021-09-06
    • 2018-03-11
    • 1970-01-01
    • 2021-09-01
    • 2011-10-02
    • 1970-01-01
    • 2021-10-29
    相关资源
    最近更新 更多