重新排列彼此靠得太近的点

Rearrange Points that are too near to each other

本文关键字:新排列 排列      更新时间:2023-09-26

我的情况是,我在静态地图图像上动态定位一堆图标,每个图标都通过CSS绝对定位。现在经常发生的情况是,两个甚至多个点彼此靠得太近,因此图标重叠,不再可区分。

我正在寻找一种算法来找到这些"彼此太近"的点,然后以一种不再相互重叠的方式展开它们的图标。

我正在考虑径向扩散,例如找到所有太近的点的平均中间点,然后相对于该点展开它们。

对于这样的问题,您是否知道任何模式?

提前非常感谢。

以下是一些可能解决您问题的解决方案:

  • 使用最近点对问题的解决方案来查找彼此最近的两个图标。 如果根据您的定义,最接近的一对"太近",您可以将它们彼此分开并重复此过程。

  • 使用 k-d 树或 R 树等空间数据结构来存储所有点。 然后,您可以执行快速最近邻搜索,以查找彼此靠近的点并将其分开。

  • 使用力导向布局算法查找全局最小化某些能量函数的点的布局。 像Fruchterman-Reingold这样的算法非常简单地编码并产生良好的结果。

希望这有帮助!