四叉树(QuadTree)原理

图例

  • 可以看到,4叉树把2D空间中的三角形进行了分组
    四叉树(QuadTree)原理_第1张图片

4叉树简介

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

4叉树基本操作

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

4叉树扩展

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

白话四叉树

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

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

  • 四叉树应用、实现

你可能感兴趣的:(游戏中的物理引擎,几何计算)