【发布时间】:2011-12-14 03:15:08
【问题描述】:
我有一组矩形( QGraphicsScene 中的 QGraphicsRectItem ),其 X 位置是固定的,Y 位置可以修改。如果有任何重叠,我想堆叠这些矩形。可以通过移动/调整这些矩形的大小来动态更改矩形的位置,并且每次都必须优化空间以确保没有间隙。重要的约束是,当我们移动一个特定的矩形时,它必须在不修改任何其他矩形的 X 位置的情况下堆叠这些矩形。
我有一个简单的蛮力算法,它遍历所有矩形,然后获取碰撞矩形,用所有碰撞矩形的一些增量值增加 Y 位置。
这个问题有什么最优解吗?
【问题讨论】:
-
动态改变?是一些类似俄罗斯方块的游戏吗?
-
没有。这不像俄罗斯方块。想象每个矩形都有一个时间范围。因此,当我移动/调整特定矩形的大小时,它的时间范围可以改变,比如矩形的新宽度将从 5 秒到 10 秒。现在在不触及其他重叠矩形的时间范围的情况下,它必须堆叠和优化空间。有一个时间刻度,每个矩形都在时间刻度下绘制,宽度不定,高度固定。