|
ViewDesignEngine
3.1.0
高性能 CAD 计算几何引擎
|
R 树动态空间索引 更多...
#include <r_tree.h>


Public 成员函数 | |
| void | build (const std::vector< T > &items) override |
| 批量构建 R 树 更多... | |
| 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 |
| 清空 R 树 更多... | |
| size_t | size () const override |
| 对象数量 更多... | |
| size_t | node_count () const |
| R 树节点总数 更多... | |
Public 成员函数 继承自 vde::spatial::SpatialIndex< T > | |
| virtual | ~SpatialIndex ()=default |
R 树动态空间索引
R 树是一种高度平衡的树,所有叶节点位于同一层。 插入时选择包围盒扩展最小的子节点;溢出时分裂节点。 支持增量插入和删除,适合数据集频繁变化的场景。
构建: O(n log n)(逐项插入) 范围查询: O(log n + k) KNN 查询: O(log n + k log k) 插入: O(log n) 删除: O(log n)
| T | 被索引的空间对象类型 |
|
overridevirtual |
批量构建 R 树
清空已有数据,将所有 items 逐个插入。 构建复杂度 O(n log n)。
| items | 待索引的对象数组 |
|
overridevirtual |
清空 R 树
|
overridevirtual |
增量插入对象
从根节点出发选择包围盒扩展最小的子节点递归插入。 节点溢出时分裂。复杂度 O(log n)。
| item | 待插入的空间对象 |
|
inline |
|
overridevirtual |
|
overridevirtual |
范围查询
从根节点遍历,仅访问与 range 相交的子节点。 复杂度 O(log n + k)。
| range | 查询包围盒 |
|
overridevirtual |
|
overridevirtual |
|
inlineoverridevirtual |