58 void build(
const std::vector<T>& items)
override;
115 size_t size()
const override {
return items_.size(); }
129 std::vector<T> items_;
130 std::vector<Node> nodes_;
139 static Point3D get_position(
const T& item);
147 static AABB3D get_aabb(
const T& item);
156 static bool ray_hits_item(
const T& item,
const Ray3Dd& ray);
165 int build_recursive(
int start,
int end);
174 void query_range_recursive(
int node_idx,
const AABB3D& range,
175 std::vector<T>& result)
const;
184 void query_ray_recursive(
int node_idx,
const Ray3Dd& ray,
185 std::vector<T>& result)
const;
std::vector< T > query_ray(const Ray3Dd &ray) const override
射线查询
size_t size() const override
对象数量
std::vector< T > query_range(const AABB3D &range) const override
范围查询
bool remove(const T &item) override
删除对象
void insert(const T &item) override
插入单个对象
std::vector< T > query_knn(const Point3D &point, size_t k) const override
K 近邻查询
void clear() override
清空 k-d 树
void build(const std::vector< T > &items) override
批量构建 k-d 树
Ray3D< double > Ray3Dd
双精度三维射线
Triangle< double > Triangle3D
双精度三维三角形
AABB< double > AABB3D
双精度三维包围盒
foundation::Vector3D Vector3D
双精度三维向量(重新导出)
foundation::Point3D Point3D
双精度三维点(重新导出)