[英]Nearest neighbor search in Octree
NN算法如何在八叉树上工作? 我一直在寻找一个很好的解释,但是大多数时候人们只是说使用KD-tree。 我做不到,我需要一步一步地可视化NN算法。
我认为最合乎逻辑的方式是:
1)找到该点所属的子八分位。
2)计算到该八分位数中最近点的距离
3)检查在该距离内是否与相邻八分圆重叠
4)如果找到较近的点,请重新计算搜索距离。
5)重复直到遍历所有可能的八分圆
6)返回最接近的点
但是我不能为此想出一个很好的逐步可视化方法。
要查找最接近搜索点的点,或按距离增加的顺序获取点列表,可以使用优先级队列,该队列可以同时包含点和树的内部节点,从而可以按距离顺序将其删除。
对于点(叶),距离就是该点到搜索点的距离。 对于内部节点(八分圆),该距离是从搜索点到可能在八分圆中的任何点的最小距离。
现在,要进行搜索,只需将树的根放在优先级队列中,然后重复:
这将按与搜索点的距离增加的顺序生成树中的所有点。 相同的算法也适用于KD树。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.