強制レイアウトを使用しています。div 要素内をクリックすると、新しい d3 ノードが作成されます。クリックした時点でノードが作成されます。ノードは、サイズが 50 ピクセル x 50 ピクセルの長方形です。ノードを作成した直後に、fixed プロパティを true に設定して、ノードが勝手に動かないようにしました。force.drag を呼び出していません。Ctrl キーを押しながらノードをドラッグすると、ノードを移動できます。エッジは、あるノードから別のノードに (ctrl キーを押したままにせずに) マウスをドラッグすることで作成できます。
さて、次の機能を追加したいと思います。任意の 2 つのノード間の最も近い距離は、特定の最小値よりも大きくする必要があります。最小距離には任意の正の値を想定できます。100 ピクセルと仮定します。新しいノードが既存のノードに近すぎて作成された場合、2 つのノード間の距離が 100 ピクセルを超えるようにノードを移動する必要があります。同様に、あるノードが移動されて別のノードに近づきすぎた場合、ノードも移動して最小 100 ピクセルの距離を維持する必要があります。
どのノードをどの方向に移動するかについての条件はありません。1 つの方法は、座標と距離を確認してから、どのノードを、どのくらい、どの方向に移動するかを計算し、それに応じてコードを実行することです。しかし、d3でもっと簡単な方法はありますか?