D3四叉树中的无​​限递归

时间:2014-05-07 22:39:52

标签: javascript d3.js coffeescript quadtree

我正在尝试向D3中的四叉树添加一个元素,但是每当我添加多个元素时,控制台中出现“RangeError:超出最大堆栈大小”错误。我的四叉树声明看起来像这样(在CoffeeScript中) :

quadtree = d3.geom.quadtree()
               .x((d) -> x_scale(d[dim_1])) 
               .y(0)

quadroot = quadtree([])

... later in another function (quadtree and quadroot are both scoped globally) ...
quadtree.extent([[x_scale.range()[0], 0],[x_scale.range()[1], 0]])

datapoints = datapoints_g.selectAll("circle")
    .data(vis_data)

datapoints.exit()
    .remove()

# now add / transition datapoints
datapoints.enter()
    .append("circle")
    .attr("cx", x_scale.domain()[0])
    .attr("cy", y_scale.domain()[0])
    .on("mouseover", showDetails)
    .on("mouseout", hideDetails)

datapoints
    .transition()
    .duration(1000)
    .attr("r", (d) -> 
        if sizeBy == 'none'
            return datapoint_size
        else
            return size_scale(d[sizeBy]))
    .attr("cx", (d) -> x_scale(d[dim_1]))
    .attr("cy", (d) -> 
        if dim_2 != 'none'
            y_scale(d[dim_2])
        else
                quadroot.add(d)
                # calculateOffset(maxR)
            )

我试图修改http://fiddle.jshell.net/6cW9u/8/中的示例,仅供参考;但是,即使我从示例中注释掉所有其他代码,我仍然会在将第二个元素添加到quadroot时得到无限递归错误。

任何指导都会非常感激!

提前致谢。

0 个答案:

没有答案