ViewDesignEngine  3.1.0
高性能 CAD 计算几何引擎
spatial_index.h
浏览该文件的文档.
1 
17 #pragma once
18 #include "vde/core/aabb.h"
19 #include "vde/core/line.h"
20 #include "vde/core/triangle.h"
21 #include <vector>
22 #include <memory>
23 
24 namespace vde::spatial {
25 using core::AABB3D;
26 using core::Point3D;
27 using core::Ray3Dd;
28 using core::Triangle3D;
29 
43 template <typename T>
44 class SpatialIndex {
45 public:
46  virtual ~SpatialIndex() = default;
47 
60  virtual void build(const std::vector<T>& items) = 0;
61 
70  virtual void insert(const T& item) = 0;
71 
78  virtual bool remove(const T& item) = 0;
79 
86  virtual std::vector<T> query_range(const AABB3D& range) const = 0;
87 
95  virtual std::vector<T> query_knn(const Point3D& point, size_t k) const = 0;
96 
103  virtual std::vector<T> query_ray(const Ray3Dd& ray) const = 0;
104 
108  virtual void clear() = 0;
109 
115  virtual size_t size() const = 0;
116 };
117 
118 } // namespace vde::spatial
空间索引抽象基类
Definition: spatial_index.h:44
virtual bool remove(const T &item)=0
删除单个对象
virtual void build(const std::vector< T > &items)=0
批量构建索引
virtual void clear()=0
清空索引中所有数据
virtual ~SpatialIndex()=default
virtual std::vector< T > query_ray(const Ray3Dd &ray) const =0
射线查询:返回与射线相交的所有对象
virtual std::vector< T > query_range(const AABB3D &range) const =0
范围查询:返回与 AABB 相交的所有对象
virtual void insert(const T &item)=0
插入单个对象
virtual size_t size() const =0
当前索引中的对象数量
virtual std::vector< T > query_knn(const Point3D &point, size_t k) const =0
K 近邻查询:返回距 point 最近的 k 个对象
Ray3D< double > Ray3Dd
双精度三维射线
Definition: line.h:141
Triangle< double > Triangle3D
双精度三维三角形
Definition: triangle.h:105
AABB< double > AABB3D
双精度三维包围盒
Definition: aabb.h:131
foundation::Point3D Point3D
双精度三维点(重新导出)
Definition: point.h:31