2012-09-24 15 views
7

私はD3ライブラリで物理的な重力のシミュレーションを設計しようとしていますが、私はたくさんの運がありません。 'layout' API referenceは、物理的重力は正の「電荷」パラメータによって実現できると述べていますが、これがどのように機能するかはわかりません。D3の物理的重さ

現時点で実装しようとしているのは、異なる速度で立ち上がり、最終的にビューポートから出る複数の可変重み付けサイズ付きの矩形を含む単一のSVG要素です。その重みは、上昇する。 (基本的に、私はビューポートの上から世界的な重力を取り入れようとしています)

D3の力のレイアウトに従ってこれを実行する方法はありますか?私は概念的な解決策を探していますが、例とコードスニペットも高く評価されています。

ありがとうございます!ここで

+0

の上にレイアウトセンターをシフトするSVG transfromationを指定することができ、画像、単一のSVG要素ですか? –

答えて

3

はカップルのアイデアです:

  1. あなたは直接目盛りイベントハンドラ内のノードの垂直位置を変更することができます。

    force.on("tick", function(e) { 
        nodes.forEach(function(o, i) { 
         o.y -= o.weight/30; 
        }); 
    
        node.attr("cx", function(d) { return d.x; }) 
         .attr("cy", function(d) { return d.y; }); 
    }); 
    

    あなたは、このアプローチのためにforce.gavity(0)を設定する必要があります。

  2. それとも、force.gravityを使用することができます。それは、レイアウトの中心に向かってノードを引き出し、あなたはビューポート
関連する問題