|
ViewDesignEngine
3.1.0
高性能 CAD 计算几何引擎
|
八叉树空间索引 更多...
#include <octree.h>


Public 成员函数 | |
| Octree (int max_depth=8, int max_items=16) | |
| 构造八叉树 更多... | |
| void | build (const std::vector< T > &items) override |
| 批量构建八叉树 更多... | |
| 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 |
| 清空八叉树 更多... | |
| size_t | size () const override |
| 当前索引中的对象数量 更多... | |
Public 成员函数 继承自 vde::spatial::SpatialIndex< T > | |
| virtual | ~SpatialIndex ()=default |
八叉树空间索引
将三维空间递归划分为 8 个等大的子立方体区域。 每个节点维护自身包围盒与所含对象列表。 当节点中对象数超过 max_items 且未达到最大深度时自动剖分。
构建: O(n) 逐项插入 范围查询: O(8^d + k),d 为最大深度,k 为结果数 KNN 查询: O(8^d + k log k) 射线查询: O(8^d + k)
| T | 被索引的空间对象类型 |
|
explicit |
构造八叉树
| max_depth | 最大递归深度(默认 8,对应 256³ 分辨率) |
| max_items | 节点剖分前可容纳的最大对象数(默认 16) |
|
overridevirtual |
|
overridevirtual |
清空八叉树
|
overridevirtual |
增量插入对象
从根节点递归,到达容纳它的最深层节点。 若节点超出 max_items 且未达 max_depth,自动剖分。
| item | 待插入的空间对象 |
|
overridevirtual |
|
overridevirtual |
|
overridevirtual |
|
overridevirtual |
|
overridevirtual |