Понимание Javascript D3 визуализации quadtree - PullRequest
5 голосов
/ 14 сентября 2011

Я пытаюсь использовать и понимать библиотеку визуализации D3 (http://mbostock.github.com/d3/),, и я смотрю на их код направленной силы , и кажется, что они используют квадродерево для вычисления сила на частицу. Код

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

где кажется, что quad.count - это количество частиц в узле quadtree. Но, глядя на их код дерева quadtree в https://github.com/mbostock/d3/blob/master/d3.geom.js#L696,, я не могу найти какую-либо ссылку на count и как она рассчитывается. Я спрашиваю, потому что я хочу изменить некоторые вещи, чтобы, возможно, изменить «вес» или «заряд» каждого узла.

1 Ответ

5 голосов
/ 14 сентября 2011

Взгляните на метод d3_layout_forceAccumulate:

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

Само дерево квадрантов не вычисляет центр заряда для своих частиц (потому что дерево знает толькоположения частиц, и не делает никаких предположений об их зарядах).После того как квадродерево создано, схема сил рекурсивно вычисляет центр заряда для каждого квадранта.

...