我有以下问题.一个大的矩形包含较小的非交叉矩形(下图中的黑色矩形),我需要找到一个算法来填充剩余的自由区域和非交叉矩形(下图中的红色矩形).速度不是算法的问题.此外,如果有人会有算法的示例源代码,我真的很感激.
编辑.小澄清我需要得到红色矩形的坐标而不是绘制它们.我也在处理点数据而不是图像.
与大多数装箱问题一样,这个问题对我来说看起来像是一个 NP 难题。有2个矩形,就有8个!(= 40320) 您需要考虑的可能安排。三个长方形可以得到 12!可能性,高达 4.8 亿。
您需要一种启发式方法才能使其可计算。除了偏爱最接近边界矩形的矩形的外边缘之外,我没有看到一个好的选择。您需要对您接受的结果矩形有更严格的要求,它们的数量不会有帮助。很高兴这不是我的问题:)