有人知道在包含障碍物的正方形中移动矩形的有效算法吗?
矩形:
障碍:
目标:添加障碍物后,尝试移动矩形,使其不会与任何障碍物发生碰撞。
State 1 http://img440.imageshack.us/img440/6995/59737192.png
State 2 http://img87.imageshack.us/img87/2336/28560269.png
State 3 http://img406.imageshack.us/img406/5469/30594959.png
答案 0 :(得分:1)
看看这个:Dynamic programming - Largest square block
基本上,给定矩形,您添加障碍物,并移除障碍物干扰的方格
然后,运行链接算法(“限制器”是障碍物和现有方块),如果找到的地方可以适合NxN大小的正方形(N是矩形的大部分),并添加矩形) 。
这可以进一步优化,我委托你这样做。 (基本上 - 矩形并不总是放在最佳位置。这可以补救,至少在某种程度上可以解决)
该解决方案将为您添加的每个障碍物提供O(n)时间和空间
您还应该考虑可能的修改:不要为每个障碍重建阵列,而是为void-of-barriers阵列构建它,并在进行时修改它。这将为每个障碍物节省整个阵列。