一、八叉树简介
1、构建八叉树
八叉树(Octree)是一种用于描述三维空间的树状数据结构。八叉树的每个节点表示一个正方体的体积元素,每个节点有八个子节点,这八个子节点所表示的体积元素加在一起就等于父节点的体积。一般中心点作为节点的分叉中心。八叉树是一种用于管理稀疏3D点云的树状数据结构,每个内部节点都正好有八个子节点。可实现“体素内近邻搜索”,“K近邻搜索”,“半径内近邻搜索”
八叉树构建原理:
(1) 设定最大递归深度。
(2) 找出场景的最大尺寸,并以此尺寸建立第一个立方体。
(3) 依序将单位元元素丢入能被包含且没有子节点的立方体。
(4) 若没有达到最大递归深度,就进行细分八等份,再将该立方体所装的单位元元素全部分担给八个子立方体。
(5) 若发现子立方体所分配到的单位元元素数量不为零且跟父立方体是一样的,则该子立方体停止细分,因为跟据空间分割理论,细分的空间所得到的分配必定较少,若是一样数目,则再怎么切数目还是一样,会造成无穷切割的情形。
(6) 重复3,直到达到最大递归深度。