帮酷LOGO
  • 显示原文与译文双语对照的内容
文章标签:Dimension  Spatial  recursive  spa  Dimensional  
Two-dimensional recursive spatial subdivision.

  • 源代码名称:d3-quadtree
  • 源代码网址:http://www.github.com/d3/d3-quadtree
  • d3-quadtree源代码文档
  • d3-quadtree源代码下载
  • Git URL:
    git://www.github.com/d3/d3-quadtree.git
  • Git Clone代码到本地:
    git clone http://www.github.com/d3/d3-quadtree
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/d3/d3-quadtree
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
  • d3-quadtree

    一个四叉树递归划分二维空间为正方形,将每个正方形划分为四个同样大小的正方形。 每个不同的点都存在于唯一的叶 node 中;重合点由链接列表表示。 Quadtrees可以加速各种空间操作,比如 approximation近似计算许多体力。碰撞检测和搜索邻近点的搜索。

    安装

    如果你使用 NPM,npm install d3-quadtree 。 否则,下载最新版本的。 你也可以直接从 d3js.org 加载,或者作为一个独立库,或者作为D3 4.0的一部分。 支持 AMD,CommonJS和香草环境。 在vanilla中,导出了一个 d3 全局:

    <scriptsrc="https://d3js.org/d3-quadtree.v1.min.js"></script>
    <script>var quadtree =d3.quadtree();</script>

    在浏览器中尝试 d3-quadtree 。

    API参考

    # d3.quadtree( [data[, x, y] ]) <>

    使用空的扩展创建一个新的空四元树,并且默认的 x and and accessors accessors accessors accessors accessors 。 如果指定了数据,则会将指定的数据的指定添加到 quadtree 。 这等效于:

    var tree =d3.quadtree()
    . addAll(data);

    在 specified quadtree中指定了 accessors x - sets和accessors,将指定的数据添加到四元树,等价于:

    var tree =d3.quadtree()
    . x(x)
    . y(y)
    . addAll(data);

    # quadtree.x( [x] ) <>

    如果指定了 x,则设置当前的 -coordinate访问器,并返回 quadtree quadtree 。 如果未指定 x,则返回当前 -accessor,默认为:

    functionx(d) {
     return d[0];
    }

    x -acccessor用于从树中添加和删除时,导出数据的x 。 如果在找到之前添加到树的数据坐标,则使用它,因此 x 和y -accessors必须一致,返回相同的值。

    # quadtree.y( [y] ) <>

    如果指定了 ,则设置当前的 -coordinate访问器并返回 quadtree 。 如果未指定 y,则返回当前的y,默认值为:

    functiony(d) {
     return d[1];
    }

    y -acccessor adding adding adding adding adding adding adding adding data data data data data -coordinate 。 如果在找到之前添加到树的数据坐标,则使用它,因此 x 和y -accessors必须一致,返回相同的值。

    # quadtree.extent( [ extent ] ) <>

    如果指定了扩展extent将expands扩展到 cover 指定点 [[ x0, y0 ],[ x1, y1 ] ],并返回四元树。[[ x0, y0 ] extent and,如果 quadtree quadtree和 y0 extent是包含上限 and [ x1, y1 ] ] where where and and and and and and and and quadtree extent extent extent 。 也可以通过调用 quadtree quadtree quadtree来扩展范围。覆盖 quadtree quadtree quadtree quadtree add add 。

    # quadtree.cover(x, y) <>

    如果四元树的范围已经覆盖指定的点,则这里方法不执行任何操作。 在四叉树中,根据需要重复扩大范围,覆盖指定的点;如果quadtree为空,则会根据需要初始化 extent quadtree extent quadtree [⌈ x ⌉, ⌈ y ⌉] 。 ( 舍入是必要的,因为如果程度稍后增加,现有象限的边界不会因浮点错误而改变。)

    # quadtree.add(datum) <>

    ,树在当前的范围外,自动扩展到覆盖子块,新的点将被自动地扩展到当前的子块。

    # quadtree.addAll(data) <>

    这相当于调用 quadtree quadtree 重复添加:

    for (var i =0, n =data.length; i < n; ++i) {
     quadtree.add(data[i]);
    }

    然而,这种方法会导致更多的compact 四叉树,因为在添加数据之前首先计算数据

    # quadtree.remove(datum) <>

    如果指定的基准在这里四元树中不存在,则这里方法不执行任何操作。

    # quadtree.removeAll(data) <>

    # quadtree.copy( )

    返回四叉树的副本。 returned四叉树中的所有节点都是四叉树对应的对应副本;但是,四叉树中的所有数据都是通过引用共享。

    # quadtree.root() <>

    返回四叉树的root node

    # quadtree.data() <>

    返回四叉树中所有数据的array 。

    # quadtree.size() <>

    返回四叉树中的数据总数。

    # quadtree.find(x, y [, radius] ) <>

    如果未指定半径,则默认为无穷大。 如果搜索区域中没有数据,则返回未定义的。

    # quadtree.visit(callback) <>

    如果非特定的回调函数返回给定 node的true,则不访问该 node的子元素;否则,将访问所有子节点。 这可以用来快速访问部分树,例如在使用 Barnes小屋近似 。 注意,子象限始终以兄弟顺序访问: 左上角,右上角,右下角,如搜索,按特定顺序访问同级,可能会更快捷。

    # quadtree.visitAfter(callback) <>

    节点

    四叉树内部节点以 left-to-right,top-to-bottom顺序表示为四个元素数组:

    • 0 - 左上象限如果有。
    • 1 - 右上象限如果有。
    • 2 - 左下象限如果有的话。
    • 3 - 右下象限如果有。

    如果子象限为空,则它可能未定义。

    叶节点表示为具有以下属性的对象:

    • data - 与这里点关联的数据,如传递给 quadtree
    • next - 这里窗口中的下一个基准,如果有的话。

    length 属性可以用于区分叶节点和内部节点: 叶节点未定义,对于内部节点,为 4. 例如要遍历叶 node 中的所有数据,请执行以下操作:

    if (!node.length) doconsole.log(node.data); while (node =node.next);

    point and -coordinates quadtree 。 要更新点的位置,删除然后在 re- 添加然后将 add quadtree quadtree quadtree quadtree 。 或者者,你可以以完全丢弃现有的四叉树,从头开始创建新的四叉树;。



    文章标签:spa  Dimension  Spatial  recursive  Dimensional  

    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语