2012-09-24 55 views
7

我試圖設計一個D3庫的物理重力模擬,但我沒有很多運氣。 'layout' API reference指出物理重力可以通過積極的「充電」參數來實現,但我不確定這將如何工作。D3物理重力

我現在試圖實現的是一個單一的SVG元素,其中包含多個不同速度的最終走出視口的多重可變加權和大小的矩形 - 它們的權重將定義它們的速度上升。 (基本上,我只是試圖從視口的頂部實現全局引力拉伸。)

根據D3力佈局有沒有這樣做的可行方法?我只是在尋找概念上的解決方案,但是我們也讚賞示例和代碼片段。

在此先感謝!

+0

是單一的SVG元素的圖像? –

回答

3

下面是幾個思路:

  1. 您可以直接修改節點的垂直位置在Tick事件處理程序:

    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; }); 
    }); 
    

    你需要(0)這種方法設置force.gavity。

  2. 或者你可以用force.gravity:它拉向節點佈局中心,您可以指定SVG transfromation轉向上述口布局中心