如果我们通过左上角和右下角定义一个矩形(x1,y1), (x2,y2)
并假设所有点都是整数值,我想列出多个矩形的并集中的所有点。
对于一个矩形,以下函数返回其中的所有点。
def findpoints(x1,y1,x2,y2):
return [(x,y) for x in xrange(x1,x2+1) for y in xrange(y1,y2+1)]
我可以通过
找到两个矩形的并集中的所有点set(findpoints(x1,y1,x2,y2)) | set(findpoints(x3,y3,x4,y4))
但是我有很多矩形,这可能非常低效。例如,假设所有矩形几乎相同。有这么快的方法吗?
答案 0 :(得分:1)
我同意StoryTeller,但我认为最好更详细地写一下,所以即使对于我们这些英语能力差的人来说也是可以理解的
计算最小矩形,它是要测试的所有矩形的重叠区域
仅针对此新矩形(x1,y1,x2,y2)测试所有点