我有许多可能重叠的矩形,它们在固定平面内具有随机大小和位置。由于这些矩形是随机的,有些可能不会重叠:
|----- | | |----| |----| | | |----|
有些可能只重叠一个角:
|-----| | |--|--| |--|--| | |-----|
有些可能包含在另一个矩形内:
|----------------| | | | |-----| | | | | | | |-----| | |----------------|
有些可能会穿过另一个矩形:
|----------------| | | |---|--------------------------------| | | | | |---|--------------------------------| |----------------|
等等
我正在尝试找到一种算法,它可以为我提供一组矩形,这些矩形代表与输入集相同的区域,但没有重叠。有些情况很明显 - 包含在较大矩形中的矩形可以被丢弃,重叠在一个角上的矩形可以分成三个矩形,穿过另一个矩形的矩形也可以。我正在寻找的是一种处理所有这些情况的通用算法。我不在乎它是否效率不高 - 输入集相当小(最多 25 个矩形)
找到重叠的矩形很容易,但很快就会变得更难,尤其是当您考虑到一个矩形可能与多个其他矩形重叠时。
这让我很头疼。有什么建议吗?
更新:
我又意识到了一件事:
我可以在将矩形添加到他设置的时,一个一个地,或者在添加所有矩形之后运行此算法。在添加矩形时这样做可能更容易,因为您只需要考虑一个矩形,但您仍然需要考虑单个矩形与多个其他矩形重叠的情况。