我正在寻找一种算法,该算法可用于确定要在屏幕上显示的数字对象的 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/