四叉树是一种二维空间的递归划分,应用在计算n体的力,或者碰撞检测。
http://bl.ocks.org/patricksurry/6478178
以最近邻查找为例子。
var quadtree = d3.geom.quadtree()
.extent([[-1, -1], [width + 1, height + 1]])
(data);
//初始化
extent是空间范围映射
后面是数据
quadtree.visit(function(node, x1, y1, x2, y2) {
node.x1 = x1;
node.y1 = y1;
node.x2 = x2;
node.y2 = y2;
nodes.push(node);
for (var i=0; i<4; i++) {
if (node.nodes[i]) node.nodes[i].depth = node.depth+1;
}
});
visit是遍历函数,可以遍历所有节点