有效地集团重叠的矩形(Efficiently Group Overlapping Rectangle

2019-10-16 13:33发布

最好的办法群重叠的矩形? 我已经使用OpenCV的尝试,但在grouprectangles如预期的方法是行不通的。

我也想过做这样的事情:

L = [every rectangle]
L_next = []
while not L.empty():
    for rectangle in L:
        L.remove(rectangle)
        for other_rectangle in L:
            if rectangle overlaps with other_rectangle:
                L_next += rectangle + other_rectangle
    L = L_next
    L_next = []

由于每一个不合并矩形会从下一张表被丢弃,在最坏的情况下,我有n/2次迭代的外循环。 两个内环应该执行nn - 1倍,这样的算法应该是大致O(n^3)在最坏的情况下,假设我没有错过任何东西,并且每一步只需要O(1)

问题:

1)需要用等价类或东西的程度,以正确合并矩形的群体。 升压是否有这样的事情?

2)这似乎是那种将不得不频繁地进行操作的,所以我很惊讶它没有找到更多的材料。 那是怎么回事?

3)假设真的是不是已经落实要做到这一点的东西,没有任何人有一些建议,以提高我的方法?

4)什么是看两个矩形重叠的最佳方式?

Answer 1:

我想看看pygame.Rect.collide方法,以你的问题的回应。 由于矩形重叠检测是在游戏中如此普遍,我想他们实现在计算复杂度方面相当不错。



文章来源: Efficiently Group Overlapping Rectangles