|
ViewDesignEngine
3.1.0
高性能 CAD 计算几何引擎
|
k-d 树空间索引 更多...
#include <kd_tree.h>


Public 成员函数 | |
| void | build (const std::vector< T > &items) override |
| 批量构建 k-d 树 更多... | |
| void | insert (const T &item) override |
| 插入单个对象 更多... | |
| bool | remove (const T &item) override |
| 删除对象 更多... | |
| std::vector< T > | query_range (const AABB3D &range) const override |
| 范围查询 更多... | |
| std::vector< T > | query_knn (const Point3D &point, size_t k) const override |
| K 近邻查询 更多... | |
| std::vector< T > | query_ray (const Ray3Dd &ray) const override |
| 射线查询 更多... | |
| void | clear () override |
| 清空 k-d 树 更多... | |
| size_t | size () const override |
| 对象数量 更多... | |
Public 成员函数 继承自 vde::spatial::SpatialIndex< T > | |
| virtual | ~SpatialIndex ()=default |
k-d 树空间索引
在每一层选择一个坐标轴,以该轴上中位数为分割面, 将空间划分为两个半空间,递归构建二叉树。
构建: O(n log n) 使用中位数分区 范围查询: O(n^(1−1/d) + k),3D 下约为 O(n^(2/3) + k) KNN 查询: O(log n) 平均,最坏 O(n) 射线查询: O(n^(2/3) + k) 近似
| T | 被索引的空间对象类型 |
|
overridevirtual |
批量构建 k-d 树
递归选择分裂轴和分裂点进行自顶向下构建。 构建复杂度 O(n log n)。
| items | 待索引的对象数组 |
|
overridevirtual |
清空 k-d 树
|
overridevirtual |
|
overridevirtual |
K 近邻查询
最优优先搜索:从根节点出发,使用优先队列按距离剪枝。 平均 O(log n),最坏 O(n)。
| point | 查询点 |
| k | 返回数量 |
|
overridevirtual |
|
overridevirtual |
|
overridevirtual |
|
inlineoverridevirtual |