如何在 C 或 C++ 中实现 3d kDTree 构建和搜索算法?我想知道我们是否有一个工作代码要遵循
向您推荐两个好的演示文稿:
- "k-d树简介"
- "第六讲:Kd树和范围树"。
两者都提供了开始编写自己的实现所需的所有(kd树背后的基本思想,简短的可视化示例和代码片段)。
更新-19-10-2021:资源现在更公开。感谢@Hari在下面的评论中发布新链接。
我发现Vlastimil Havran的出版物非常有用。他的博士论文很好地介绍了kd树和遍历算法。进一步的文章是关于几个改进的,例如如何在O(nlogn)中构建kd树。在不同的图形库中也有很多实现。你应该谷歌一下。
有关 C 语言中 3D kd 树实现的示例,请查看 kd3。它不是通用库,要求输入数据采用特定形式,但想法和方法应该是可转移的。
披露:我是kd3的作者。
免责声明:它是作为现有应用程序的概念验证代码编写的,因此不像它应该的那样通用,也没有经过充分测试。欢迎错误报告/修复。