了解Javascript D3可视化四叉树

时间:2011-09-14 16:42:00

标签: d3.js javascript force-layout quadtree

我正在尝试使用并了解D3 visualization library(http://mbostock.github.com/d3/),我正在查看their force directed code,看来他们正在使用四叉树计算粒子上的力。代码是

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

看起来很简单quad.count是四叉树节点中的粒子数。但是查看quadtree code中的https://github.com/mbostock/d3/blob/master/d3.geom.js#L696,我找不到count的任何引用,以及它是如何计算的。我问,因为我想修改一些东西,或许改变每个节点的“权重”或“收费”。

1 个答案:

答案 0 :(得分:5)

查看d3_layout_forceAccumulate方法:

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

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