1

我有一个“复杂”的问题,我在可以随机放置在屏幕上的元素(黑色)之上有一堆工具提示(橙色)。工具提示是一个大正方形,在它的 4 个边之一的中间有一个三角形,指向元素方向。默认情况下,三角形会在元素的中间,但只要靠近它就可以移动,所以我们很难理解它是指这个元素而不是另一个元素。

问题是,工具提示不能相互重叠,并且不能超出屏幕。

我的工具提示问题的图像

我考虑过首先将每个工具提示放置到它们的默认位置(三角形向下),然后检查它们是否超出屏幕或与另一个重叠,如果是,请尝试另一个位置。但是使用这种技术(这可能是最简单的一种),我不能保证最好的位置,因为一旦放置了一个工具提示,如果另一个工具提示不能放在任何地方,我不会替换他,否则它会变得太复杂。

有人对如何处理此类问题有任何提示/想法吗?

谢谢!!

4

2 回答 2

1

您可以使用某种排斥电荷的物理模拟来放置所有工具提示,类似于在某些用于绘制图形的算法中所做的。您可以将每个工具提示建模为一个在其黑盒上附有软弹簧的对象,同时模拟所有工具提示之间以及工具提示与图像边缘之间的强排斥力。您计算所有力并迭代移动工具提示,直到所有位置收敛。您可以将力比例设置为平方反比、立方反比等,以找到不错的结果。

这可能需要一些工作来实现,但对于简单的情况可能会给出不错的结果。可能无法保证始终存在一个好的解决方案,因为如果您添加太多工具提示,您的图像将被填满。

于 2013-08-20T18:07:48.723 回答
1

这看起来像是地图标注问题的一个实例。维基百科有一篇关于它的文章

于 2013-08-21T12:20:58.910 回答