二维对象分布算法

2D objects distribution algo

我必须以这样的方式对齐元素以避免它们相交,但又不能将它们移动得太远:

为简单起见,元素是矩形的(实际上是边界框)。元素只能通过它的法向量移动(可以是任何角度)。

有什么著名的算法可以用在这里吗?每次要对齐大约50-200个元素(延迟很重要,应该是几毫秒),而且我不认为蛮力是个好主意(但还没有尝试)

更深入:我必须实施街道名称标签。比方说,我有矢量线(街道),现在,文本应该沿着这些矢量显示(它可以旋转,而不是扭曲)。但是文本不应该重叠太多,所以我必须沿着它的矢量线移动它。也许这些东西有一些算法?

所有这一切都发生在 运行 时间内,当用户在街道上导航时。

PS: 我用的是Qt(简单的QPainter,不是图形框架)

好的,好久没找到合适的了:Automatic label placement, Dynamic Label Placement in Practice