実装を開始する直前に、自分の理論があることを確認したいだけです。
定数:
m
=頂点の質量(すべて同じ-おそらくこれをノードの半径に設定します)k
=一定のエッジ力。l
=「エネルギー最小状態」でのエッジの長さ。
変数:
d
=2つの頂点間の距離。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
か?