空间管理 详解八叉树 |
您所在的位置:网站首页 › 三维空间划分 › 空间管理 详解八叉树 |
空间管理 详解八叉树
前言1.数据结构选型1.1数组1.2树型结构1.3哈希线性结构
2.查询2.1 Morton位置码2.1.1 Morton码计算2.1.2 位置与Morton码的映射2.1.3 代码中的运算2.1.3.1 按位分离2.1.3.2 交叉组合
3.插入4.删除5.碰撞检测5.2 避免多次检测
前言
首先先明确一个概念,八叉树只做空间管理,而碰撞相关的检测是另外的东西 需要为完全树,比较不灵活,内存占用较大 1.2树型结构可以不为完全树,深度不一,需要再扩展,节省内存,搜索数据的复杂度为 O ( l o g n ) O(logn) O(logn) 1.3哈希线性结构通过哈希表存储,散列处理比较麻烦,但是搜索的复杂度为 O ( 1 ) O(1) O(1),并且使用Morton码作为键值时,有很好的占位率 2.查询 2.1 Morton位置码
将行数和列数的2进制交叉组合,可以得到位置码 为什么要交叉组合:因为Morton码的增加是通过每行增加两位后,再进入下一行的 例子: 第3行第4列: 3的二进制表示:011 4的二进制表示:100 交叉组合:011010 2.1.2 位置与Morton码的映射假设x轴向上的八叉树范围为 [ x m i n , x m a x ] [x_{min},x_{max}] [xmin,xmax],八叉树半径为r,则 位置码 p = x − x m i n 2 ∗ r p=\frac{x-x_{min}}{2*r} p=2∗rx−xmin p0.5则数位于yz平面的右侧,为1 将其转换为二进制,有效高位为0,则在yz平面的左侧 将其转换为二进制,有效高位为1,则在yz平面的右侧 次有效高位可以判断是在子节点中的左右,因为每次都是原先的二分之一。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |