四叉树(QuadTree)原理

图例

  • 可以看到,4叉树把2D空间中的三角形进行了分组
    在这里插入图片描述

4叉树简介

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

4叉树基本操作

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

4叉树扩展

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

白话四叉树

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

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

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值