php - 图间距算法

标签 php graph algorithm

我正在寻找一种算法,该算法可用于确定要在屏幕上显示的数字对象的 x y 坐标。每个对象都可以与另一个对象相关,可以有任意数量的关系,也可以有任意数量的这些对象。

对于显示这些对象的区域的整体大小没有限制。

我正在用 php 编写此代码,希望将坐标存储在数组中。

最佳答案

一种方法是使用伪物理模型。如果它们相连,您的物体会产生排斥力和吸引力。

您根据施加到它们的力的总和移动对象:在每一步计算施加到一个对象的力的总和,并沿力的方向移动它。

在伪代码中,一次迭代是:

for each object o1
   force[o1] = 0
   for each object o2
      if o1 and o2 are linked
         force[o1] += attraction_force(o1, o2)
      else
         force[o1] += repulsion_force(o1, o2)

for each object o1
   move(o1, force[o1])

并在对象达到稳定状态时停止迭代。

您可能需要试验不同的力定律。特别是,您希望相邻的对象能够快速达到平衡。我会用与距离成线性关系的力强度(如 Spring )或二次方(引力/电吸引力)进行实验

此外,您可能需要随机移动对象以防止图形的某些部分卡住。第一次迭代的随机移动量应该很大,并随时间减少。

关于php - 图间距算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2661768/

相关文章:

algorithm - 最高的金字塔

c++ - 如何删除二维 vector 网格中的部分路径?

algorithm - 在 pi 的扩展中查找一系列整数的高性能语言/方法

php - 如何从代码中获取 PCRE(与 PHP 捆绑在一起)的版本?

c# - 有什么比画单独的线更快的绘制图形的方法?

c++ - 如何在 C++ 中可视化/绘制图形?

r - 使用基础 R 分组和堆叠的条形图

php - 我想保存结果以使用 enter 循环

php - 将文本拆分为关联数组

php - mysqli_fetch_object 和 $res->fetch_object 之间的区别