简单八叉树源码剖析

本文基于Brandon Pelfrey的文章和GitHub项目,详细剖析了八叉树的空间模型思想,利用中心点向量和半边长向量定义八个子空间。同时,探讨了递归在构建八叉树中的应用,以及如何通过巧妙的子空间编号和位运算高效地查找变换。
摘要由CSDN通过智能技术生成

针对文章:http://www.brandonpelfrey.com/blog/coding-a-simple-octree/

及其github:https://github.com/brandonpelfrey/SimpleOctree/ 中的代码剖析总结:

1.空间模型思想:

一个大的正方体或者长方体,只需要记录中心点向量和半边长向量,用这两个向量加减即得到8个子空间;

8个子空间中的每个空间又作为一个空间记录中心点向量和半边长,继续对它的子空间进行划分为8个子空间,继续下去。
其中空间内的物体或点,如果当前空间体不存在子空间那么存放,如果存在子空间那么下方到子空间中,所以根据物体点产生
子空间,需要处理当前空间中的物体(若当前是叶子空间)和新加入的物体,都要将他们放置到新生成的子空间中(即叶子空间)。

2.递归的思想:

1)理解压栈的过程,只有调用点关联,也就是函数的参数和返回值关联,其它代码变量都因为拷贝了一份而作用域无效的了。
2)理解终止条件多样性,可以if也可以for/while,那些是终止条件,那些不是终止条件,终止条件一定要在递归前面。
3)理解出栈的过程,因为到达终止条件了,调用点出栈那么函数可以像正常函数一样继续执行函数体内它没有执行的部分。
4) 递归函数的复杂结构,例如执行左子树递归,判断,又执行右子树递归,实现前序,中序,后序遍历的情形,都是由1)2)3)来解释的。

3.巧妙的八叉树子空间编号,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值