グラフ レイアウトの描画を行う必要があり、ここで実装され、ここで説明されている Spring レイアウト アルゴリズムのようなものを使用することを検討しています。
ただし、私のノードにはすべて幅と高さがあります (エンティティ図です)。これを方程式に組み込む方法を誰か説明できますか?
Graph JavaScript フレームワークを出発点として、次のことを行うことができます。Node
クラスが属性によって拡張されていると仮定しますwidth
およびheight
. 次に、関数layoutRepulsive
で、ノードの距離を計算するための式を、それらのサイズを考慮して変更する必要があります。
var dx = Math.max(0, Math.abs(node2.layoutPosX - node1.layoutPosX) - 0.5*(node2.width+node1.width));
var dy = Math.max(0, Math.abs(node2.layoutPosY - node1.layoutPosY) - 0.5*(node2.height+node1.height));
maximum 関数は、バウンディング ボックスが重なっている場合でも、距離の可能な最小値として 0 を適用します。