2
以视觉上吸引人且直观的方式传播标签的算法
简洁版本 是否存在一种设计模式,用于以不重叠的方式分配车辆标签,并使其尽可能靠近其所指的车辆?如果没有,我建议的任何一种方法可行吗?您将如何自己实施? 扩大的视野 在我写的游戏中,我对空中载具有鸟瞰图。在每辆车旁边,我还带有一个小标签,上面标有有关该车的关键数据。这是一个实际的屏幕截图: 现在,由于车辆可能在不同的高度飞行,它们的图标可能会重叠。但是,我永远都不要让它们的标签重叠(或者,车辆“ A”的标签与车辆“ B”的图标重叠)。 目前,我可以检测到小精灵之间的碰撞,并且只需沿与否则重叠的小精灵相反的方向推开有问题的标签即可。这在大多数情况下都可行,但是当空域变得拥挤时,即使有其他“更智能”的选择,标签也可能被推离其飞行器很远。例如我得到: B - label A -----------label C - label 在哪个地方会更好(=标签离车辆更近): B - label label - A C - label 编辑:还必须考虑到,在重叠车辆的情况下,可能还有其他配置,其中车辆的标签可能会重叠(例如ASCII艺术示例显示了三辆非常接近的车辆,其中的标签A会与的图标重叠B和C)。 我有两个关于如何改善当前状况的想法,但是在花时间实施它们之前,我曾想过向社区征询建议(毕竟,这似乎是一个“常见的问题”,可能存在一种设计模式)。 对于它的价值,这是我在想的两个想法: 标签空间的插槽化 在这种情况下,我会将所有屏幕划分为标签的“插槽”。然后,每辆车始终将其标签放置在最近的空车上(空=该位置没有其他精灵。 螺旋搜索 从屏幕上车辆的位置开始,我将尝试将标签以递增的角度放置,然后以递增的半径放置,直到找到不重叠的位置。在以下方面: try 0°, 10px try 10°, 10px try 20°, 10px ... try 350°, 10px try 0°, 20px try …