[英]Algorithm for finding the fewest rectangles to cover a set of rectangles without overlapping
[英]Algorithm for finding polygon vertices for a given set of overlapping rectangles
很好的解释,加雷斯。 我想弄清楚的是如何实现解决方案的反面,即如何从一组矩形开始并到达多边形。
我的解决方案适用于所有情况,除非两个或多个矩形的部分或整个边缘相互重叠。
如何消除构成重叠边缘的点?
根据链接的问题,我将假设矩形是轴对齐的,并且它们具有成对的不相交的内部。 将每个矩形分解为四个线段,顺时针方向。 对水平和垂直线段重复以下过程。
将水平线段除以y。 对于每个y,每个段都引发两个事件:尾部的开始事件和头部的停止事件。 用x对事件进行排序(请注意,面向左的段的停止事件在相应的开始事件之前发生)。 初始化变量sign = 0
,然后进行遍历,在每个开始事件上执行sign += 1
,在每个停止上执行sign -= 1
。 每当sign
从0
变为1
,都将以其尾部在当前扫描位置开始一个定向段。 每当sign
从1
变为0
,以其头在当前扫描位置结束该段,如果其退化则将其丢弃。 同样,每当sign
从0
到-1
,就开始以其当前扫描位置的头部为方向的线段。 每当sign
从-1
变为0
,以当前扫描位置的尾部结束该段,如果其退化则将其丢弃。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.