orl*_*rlp 5 algorithm rectangles
对于碰撞检测,我想使用尽可能少的矩形将位图转换为一组矩形.标题中描述了对该问题的更正式描述.一个例子:

对于多种解决方案的断路器,如果所有矩形组合所覆盖的总面积最大化,我更喜欢它.例如,上图中的蓝色矩形可能会更小,但这可能是一个不太理想的解决方案.
这个问题有更常见的名称吗?有文献吗?或者是一种提供最佳解决方案的简单算法?
我设法以一种足够好的方式解决了这个问题 - 但它可能不是最佳的。
使用位图的尺寸创建一个二维数组。对于位图中黑色的每个像素,将相应的元素设为 WALL,否则设为 EMPTY_SPACE。
从左到右、从上到下扫描数组,查找第一个 EMPTY_SPACE。保存这个坐标。
创建区域 1 的矩形,将左上角坐标设置为在 2 处找到的坐标,向下和向右延伸 1。
将矩形水平向左和向右延伸,只要它不覆盖任何墙壁。
垂直向上和向下延伸矩形,只要它不覆盖任何墙壁。
将矩形覆盖的任何元素标记为 COVERED_SPACE 并将矩形添加到矩形集中。
如果仍然有一个包含 EMPTY_SPACE 的元素,则转到 2,否则就完成了。
| 归档时间: |
|
| 查看次数: |
832 次 |
| 最近记录: |