四叉树Quadtrees在游戏领域应用

孙广东   2018.6.24

    维基百科介绍:

      四元树又称四叉树是一种树状数据结构,在每一个节点上会有四个子区块。四元树常应用于二维空间数据的分析与分类。 它将数据区分成为四个象限。数据范围可以是方形或矩形或其他任意形状。

所有的四元树法有共同之特点:

  • 可分解成为各自的区块
  • 每个区块都有节点容量。当节点达到最大容量时,节点分裂
  • 树状数据结构依造四元树法加以区分

一些四元树的常用法

  • 图像表示法
    四叉树Quadtrees在游戏领域应用_第1张图片
  • 空间索引(Spatial index)。
  • 在二维的有效率之碰撞侦测(collision detection)。
  • 地形数据的隐藏面决定(Hidden surface determination)。
  • 存储分散数据,诸如电子表格(spreadsheet)、或著一些矩阵计算的格式化信息。
  • 多维场的解法。(计算流体力学, 电磁学)
  • 生命游戏模拟程序。 


四叉树来源于将正方形区域分成较小正方形的想法。所以他的应用倾向于 2D搜索或优化算法

四叉树Quadtrees在游戏领域应用_第2张图片

当你沿着四叉树向下移动时,每个正方形被分成四个较小的正方形。

换一种角度在来看。 通过绘制显示每个节点的子节点的线条,  如果你专注于黑色线条,你可以看到它们形成了一个分支树状结构,每层都有四个分支。

四叉树Quadtrees在游戏领域应用_第3张图片

我们可以使树的视图更加抽象,更接近我们用来表示它的数据结构,方法是将图的树部分展平成二维树图。

四叉树Quadtrees在游戏领域应用_第4张图片

现在你可以看到四叉树作为一个数据结构并不是很特别 - 它只是一棵树,每个节点有四个子节点。

四叉树Quadtrees在游戏领域应用_第5张图片

参考 js 版本 的   

 https://github.com/CodingTrain/QuadTree  ,   移植到 Unity中   

https://download.csdn.net/download/u010019717/10495980  


参考文章

HTML5实现3D和2D可视化QuadTree四叉树碰撞检测

[译]2D空间中使用四叉树Quadtree进行碰撞检测优化

Quadtree and Octree Culling Alternative          四叉树和八叉树剔除



你可能感兴趣的:(学unity涨知识)