只是想在开始实施之前检查我的理论。
常数:
m
=顶点质量(都一样 - 可能将其设置为节点半径)k
= 恒定的边缘力。l
=“能量最小状态”的边长。
变量:
d
= 两个顶点之间的距离。cl
= 边的当前长度。
理论:
每个顶点对每个其他顶点都有排斥力,即:m / (d^2)
。对于每条边,它都表现出一个力,两个顶点都将它们“拖动”到使边达到“能量最小状态”的方向;所以每个顶点:-k * ((l - cl) / 2)
.
伪代码:
until energy minimal state
for each vertex v1
for each vertex v2
if v1 != v2
v1.velocity += m / square_distance (v1, v2)
endif
end
end
for each edge e
e.v1.velocity += -k * (delta_min_energy_len (e) / 2)
e.v2.velocity += -k * (delta_min_energy_len (e) / 2)
end
for each vertex v
v.position += (v.velocty * dampening_constant)
end
end
评论:那么这行得通吗?我应该设置m
什么k
?