5

我正在尝试使用和理解D3 可视化库(http://mbostock.github.com/d3/),我正在查看他们的力导向代码,似乎他们正在使用四叉树来计算粒子上的力. 代码是

      var k = kc * quad.count * dn * dn;
      node.px -= dx * k;
      node.py -= dy * k;

其中 quad.count 似乎是四叉树节点中的粒子数。但是在https://github.com/mbostock/d3/blob/master/d3.geom.js#L696中查看他们的四叉树代码,我找不到对 的任何引用,以及它是如何计算的。我问是因为我想修改一些东西来改变每个节点的“重量”或“费用”。count

4

1 回答 1

5

看一下d3_layout_forceAccumulate方法:

https://github.com/mbostock/d3/blob/master/src/layout/force.js#L294-324

四叉树本身并不计算其粒子的电荷中心(因为四叉树只知道粒子的位置,并且不对它们的电荷做出任何假设)。在生成四叉树之后,力布局递归地计算每个象限的电荷中心。

于 2011-09-14T18:09:48.630 回答