这类似于bin packing problem,但有一些更改。

我所拥有的是带注释数据的时间序列,当我绘制图表时,我想将注释放置在总体上使与注释点的距离最小的位置。

此图表(有意被盗)显示了我想要执行的操作:。

我知道这是一个优化问题,但是我不知道从哪里开始。我首先要做的是将其放置在相应的x处,然后上下移动y来找到可用的位置并保存已绘制的区域。虽然这样做有效,但实际上并没有充分利用可用空间,我想知道是否还有更好的选择。

我想知道是否有已知的算法可以解决此问题或类似问题?

补充说明:并不需要是最佳的,但是绝对需要快速的。这是在渲染过程中完成的,因此执行该UI时会被阻塞。

最佳答案

解决这一难题的方法有很多种。我建议从automatic label placement上的Wikipedia文章开始。您还可以从force-based algorithms for graph drawing领域获得一些想法。

关于algorithm - 快速二维二维装箱算法,每个矩形和一个点的距离最小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8931314/

10-11 17:21