我正在寻找一种算法,可用于确定要在屏幕上显示的多个对象的X和Y坐标。每个对象可以与另一个对象相关联,并且可以存在任意数量的关系以及任意数量的这些对象。
对于要显示这些对象的整个区域没有限制。
我将使用php编写此代码,并将坐标存储在数组中。
对于要显示这些对象的整个区域没有限制。
我将使用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])
当对象达到稳定状态时,请停止迭代。
您可能需要尝试不同的力学规律。特别是,您希望相邻的对象能够迅速达到平衡状态。我建议您尝试与距离成线性关系的力强度(如弹簧)或二次方关系(万有引力/电吸引力)。
此外,您可能需要随机移动对象以防止图形部分保持不变。在最初的迭代中,随机移动的数量应该很大,并随时间而减少。