如何将由小方块组成的区域划分为更大的矩形?

Mit*_*ldu 8 geometry 2d rectangles area

我将去哪里寻找算法,这些算法将2d网格的值为0或1作为输入,然后识别其中所有可能的非重叠矩形?

在一个更实际的解释中:我正在绘制一个由多个正方形表示的网格,我希望找到一种方法将尽可能多的相邻正方形组合成矩形,以减少在循环中花费的时间.每个方块并绘制它.

不需要最高效率,速度更重要.

附录:显然我正在寻找的似乎是一种称为Tesselation的技术.现在我只需要为这个具体案例找到一个很好的描述.

附录2:"1"方块的边界将是不规则的,在某些情况下甚至不连接,因为"1"方格的分布将是完全随机的.我需要识别这些不规则的形状并将其拆分成规则的矩形.

正确答案:为了在速度和效率之间取得最佳平衡,最好使用网格数据填充四叉树,每个节点的状态值为空/部分填充/填充.

Dan*_*ski 3

我已经用 OpenGL 完成了类似的 3d 盒子快速体素可视化。

我从左上角的框开始并存储空/填充标志。然后我尝试将矩形向右扩展,直到遇到带有不同标志的框。我在向下的方向也做了同样的事情。

绘制矩形(如果已填充)。

如果存在剩余框,则对最后一个矩形引发的所有三个剩余矩形(即右、下和右下)递归地重复该过程:

xxxx   1111
xxxx   1111
xxxx   1111

2222   3333
2222   3333
2222   3333
Run Code Online (Sandbox Code Playgroud)