2013-05-01 34 views
1

对于collision detection example和其他四叉树应用程序,d3如何更新在“tick”定时器回调中使用的四叉树?例如。是数据绑定对象的位置存储在“数据”数组的变化,每次总是重新计算“从头开始”内部了解d3可视化四叉树,续(2)

force.on("tick", function(e) { 
    var q = d3.geom.quadtree(nodes), 
     i = 0, 
     n = nodes.length; 
... 

四叉树,或者是它在某些更有效的方式来更新先前的四叉树?

此问题与已经回答的a previous question有关。另外,前一个问题的页面上的链接

https://github.com/mbostock/d3/blob/master/d3.geom.js#L696

现在不知道,似乎打破了如何解决这个自己。

对不起,困惑,任何帮助表示赞赏!

丹尼

回答

0

在你挂的例子中,四叉树从零开始重新计算在每个刻度。它不保存一次计算出的下一次迭代的树。

+0

这很有趣,谢谢!我想知道根据以前的状态进行更新是否可以在某些情况下提供显着的性能改进?如果是这样,这应该成为d3 github页面上的“问题”吗? – user1995973 2013-05-03 17:05:30

+0

一般来说,圆圈(或一般元素)的绘制和动画将比这个计算更昂贵。但是,是的,可能有些情况下,它成为限制因素。您当然可以为此解决问题,但除非您遇到导致问题的特定情况,否则这个问题的优先级将会较低。另一个问题是可以通过增量获得多少 - 可能没有那么多。 – 2013-05-03 20:17:40

+0

这是有道理的,如果当我得到更多有关储蓄的详细/定量信息,那么我将重新审视这个问题。谢谢 – user1995973 2013-05-07 23:15:50