kd树
- 每个维度都按照二叉树分割
- 每一个维度上的二叉树
kd树建立
-
按照xyxyx的顺序去分割点
-
确定最后允许的叶子数leaf_size
-
随机找中值 平均值找中值
kd树查找最邻近点
- 找根节点
- 如二叉树步骤一致 先按一个维度搜索
Octree 八叉树
- 每个节点有8个孩子
- 可以提前结束搜索
- 3个维度每个维度分一半随意 2的3次方 = 8
8叉树的构建
- 选择最大的一个正方形
- 每一个单位称为octant
- 定义每个方格最多的点数leaf_size
- 或者定义最小范围min_extend 用于应对多个相同点叠加的情况
Knn查找
-
寻找根节点
-
找到最近的S2
-
找到S8 为叶子节点 得到最小半径worst distance
-
寻找bca 更新最小半径
-
由于最小搜索圆在S2里面 所以不需要再搜索S3 S4 提前结束搜索