图例

  • 可以看到,4叉树把2D空间中的三角形进行了分组

4叉树简介

  • 定义

    • 把2D空间均等划分,管理空间中物体的树状数据结构
  • 功能
    • 定位空间中一点所在区域
    • 定位空间中某个多边形所在区域
    • 获取某个区域下的物体
  • 应用
    • 物理引擎中,用于碰撞检测系统中的粗略物理碰撞判断过程使用4叉树减少不必要的碰撞检测
    • 渲染系统中,扩展4叉树为8叉树,用于剔除空间中不需要渲染的物体

4叉树基本操作

  • 插入

    • 插入一个物体,插入时分割空间直到能容纳改物体的最小空间,插入该物体到结点

      • if 这个节点是能容纳该物体的最小节点,放入这个节点
      • else 分割这个节点,找到合适的子节点执行插入操作
  • 删除
    • 找到该物体的所属的结点,删除该物体,如果结点不再包含物体并且不含有叶子节点,删除该节点
  • 获取给定物体在节点中的空间划分
    • 获取给定物体在当前节点的空间信息,即4象限信息
  • 查询是否包含给定物体

4叉树扩展

  • 更新

    • 当物体的位置、大小发生变化,更新4叉树中该物体的信息
    • 一般是删除该物体后重新插入
  • 获取某节点下所有物体

白话四叉树

  • 均等划分空间,用树状结构代表这些被分割的空间节点。把空间中的物体放到对应所属的空间中。
  • 查询时只需要知道要查询哪个空间下的节点,遍历这个节点下的物体即可,减少了查询数,提升了性能

下一篇是四叉树的应用和实现

  • 四叉树应用、实现

四叉树(QuadTree)原理相关推荐

  1. 四叉树和希尔伯特曲线做空间索引

    前序 四叉树或四元树也被称为Q树(Q-Tree).四叉树广泛应用于图像处理.空间数据索引.2D中的快速碰撞检测.存储稀疏数据等,而八叉树(Octree)主要应用于3D图形处理.对游戏编程,这会很有用. ...

  2. js小球与边框碰撞反弹_四叉树在碰撞检测中的应用

    缘起 <你被追尾了>中预告了加速碰撞检测的算法--四叉树(for 2D),所以本文就来学习一下. 分析 首先是为什么要使用四叉树进行优化,其实<你被追尾了>中已经说了,这里简单 ...

  3. 数据结构与算法 学习笔记(中)

    油管上的CS61B的视频 学习代码 随看随记 Dijkstra's algorithm再理解 Asymptotics 本意是渐近的意思:这里代指当参数为无穷大时,所需要进行运算的次数,和我们常说的复杂 ...

  4. Game Engine Architecture by Jason Gregory:1.6 实时游戏引擎架构

    http://blog.csdn.net/skylmmm/article/details/6230420 一个游戏引擎一般是由工具集和一个运行时组件组成.下面部分我们将首先研究这个运行时组件,然后再看 ...

  5. Postgresql杂谈 11—深入学习SP-Gist索引

    本文,我们深入学习下Posgresql中的SP-Gist索引.SP-Gist是Space-Partition Gist(空间分区Gist索引)的简写.和Gist索引一样,它也是一个索引框架,但是相比较 ...

  6. 两个软件相互交换数据_面试需要知道的六种数据结构

    本文作者 拉勾教育专栏作者苏勇查看:13624回复:128 数据结构是算法的基石,若无扎实的数据结构基础,想把算法学好甚至融会贯通是非常困难的,而优秀的算法又往往取决于你采用哪种数据结构. --< ...

  7. 奥维互动地图GEE协议历史影像分析与应用

    Gee协议提供查看Google Earth,Google Maps,Bing Maps,DigitalGlobe,Kosmosnimki,Yandex.Maps等服务提供的高分辨率卫星图像和常规地图. ...

  8. Oracle-Spatial空间数据库基础

    因为爱好各种版本hello world,就把两个空间数据库oracle-spatial,mysql版本的hello world 整理一下. 一.简介 oracle spatial是oracle公司推出 ...

  9. 《游戏引擎架构》笔记一

    <游戏引擎架构>该系列的博文部分参考下面的博客: http://raytaylorlin.com/categories/%E6%8A%80%E6%9C%AF/%E6%B8%B8%E6%88 ...

  10. 1. 【Part3】 Contour Detection and Hierarchical Image Segmentation【轮廓检测图像分割】

    Reference from Arbelaez, P., Maire, M., Fowlkes, C., & Malik, J. (2011). Contour detection and h ...

最新文章

  1. java.io.file jar_IDEA Maven 打包运行 jar java.io.FileNotFoundException: 问题?
  2. DL之GD:利用LogisticGD算法(梯度下降)依次基于一次函数和二次函数分布的数据集实现二分类预测(超平面可视化)
  3. [我的1024开源程序]100元写的软件工程和VB试题
  4. 树状数组基础原理与模板
  5. 比特币将来能取代黄金,成为世界货币?
  6. Enterprise Library 2.0 Hands On Lab 翻译(3):数据访问程序块(三)
  7. 漫步最优化三十四——高斯-牛顿法
  8. simpy练习案例(二):小车运行与充电
  9. 日产汽车宣布已关停日、英、美、南非、俄等地工厂
  10. 【转】赶集网mysql开发36军规
  11. python3.6 - threading 多线程编程基础(1)
  12. HDU-5889 Barricade
  13. find命令结合exec和xargs使用的区别
  14. stm32 ov2640硬件软件笔记
  15. JUCE框架教程(3)—— Component ClassGraphics入门
  16. 精品软件-每日更新2013-1112
  17. html中output标签详细介绍
  18. 徐小贱c语言试卷,纹了这条锦鲤,我遇见了现在的老公 | 纹身大赏No.12
  19. php phpexcel 导入时间转换成正常时间
  20. php curl文件上传,在 php 中通过 CURL 上传文件

热门文章

  1. 计算机考研复试难,艰难与快乐:2008年重庆邮电大学计算机考研复试经历
  2. 9260ac网卡linux驱动,intel wireless-ac 9260 driver
  3. 幻彩灯 html5,WS2811幻彩灯程序
  4. java sync 实现原理_JAVA 同步实现原理
  5. 激活Navicat premium12时出现“Rsa public key not find“报错时的解决方法
  6. java restsharp_RestSharp 一个.NET(C#)的HTTP辅助类组件
  7. 形式化方法(一) 逻辑部分概念梳理
  8. 【效率工具合集】Win10镜像迅雷快速安装
  9. 数据库中多表连接的左连接、右连接、内连接、全连接的使用场景
  10. postman下载安装汉化及使用