|----- | | |----| |----| | | |----|有些可能只有一个角落重叠:
|-----| | |--|--| |--|--| | |-----|有些可能包含在另一个矩形内:
|----------------| | | | |-----| | | | | | | |-----| | |----------------|有些可能穿过另一个矩形:
|----------------| | | |--|-------------------| | | | | |--|-------------------| |----------------|等等。
我正在尝试找到一种算法,可以给我一组代表输入集合相同区域的矩形,但没有重叠。有些情况很明显-包含在较大矩形中的矩形可以被丢弃,并且在一个角落上重叠的矩形可以分成三个矩形,与穿过另一个矩形的矩形一样。我要找的是一种通用算法,可以处理所有这些情况。如果效率不是特别高也无所谓,输入集合很小(最多25个矩形)。
查找重叠的矩形很容易,但是从那里开始就变得越来越困难,特别是考虑到一个矩形可能与多个其他矩形重叠。
这让我头痛。有什么建议吗?
更新:
我刚才意识到另一件事:
我可以在将矩形添加到集合中的时候运行此算法,一个接一个地添加,或者在添加所有矩形之后运行它。逐个添加矩形可能更容易,因为您只需要考虑一个矩形,但是您仍然需要考虑单个矩形与多个其他矩形重叠的情况。