PointSampler library (C++)
Loading...
Searching...
No Matches
nanoflann_adaptator.hpp
Go to the documentation of this file.
1/* Copyright (c) 2025 Otto Link. Distributed under the terms of the GNU General
2 Public License. The full license is in the file LICENSE, distributed with
3 this software. */
4#pragma once
5#include <nanoflann.hpp>
6
8
9namespace ps
10{
11
12template <typename T, size_t N> struct PointCloudAdaptor
13{
14 const std::vector<Point<T, N>> &pts;
15
16 PointCloudAdaptor(const std::vector<Point<T, N>> &points) : pts(points) {}
17
18 inline size_t kdtree_get_point_count() const { return pts.size(); }
19
20 inline T kdtree_get_pt(const size_t idx, const size_t dim) const
21 {
22 return pts[idx][dim];
23 }
24
25 template <class BBOX> bool kdtree_get_bbox(BBOX &) const
26 {
27 return false;
28 } // Not using bounding boxes
29};
30
31template <typename T, size_t N>
32using KDTree = nanoflann::KDTreeSingleIndexAdaptor<
33 nanoflann::L2_Simple_Adaptor<T, PointCloudAdaptor<T, N>>,
35 N>;
36
37} // namespace ps
Definition dbscan_clustering.hpp:11
std::vector< Point< T, N > > random(size_t count, const std::array< std::pair< T, T >, N > &axis_ranges, std::optional< unsigned int > seed=std::nullopt)
Generates a specified number of uniformly distributed random points in N-dimensional space.
Definition random.hpp:66
nanoflann::KDTreeSingleIndexAdaptor< nanoflann::L2_Simple_Adaptor< T, PointCloudAdaptor< T, N > >, PointCloudAdaptor< T, N >, N > KDTree
Definition nanoflann_adaptator.hpp:35
Definition nanoflann_adaptator.hpp:13
size_t kdtree_get_point_count() const
Definition nanoflann_adaptator.hpp:18
bool kdtree_get_bbox(BBOX &) const
Definition nanoflann_adaptator.hpp:25
T kdtree_get_pt(const size_t idx, const size_t dim) const
Definition nanoflann_adaptator.hpp:20
PointCloudAdaptor(const std::vector< Point< T, N > > &points)
Definition nanoflann_adaptator.hpp:16
const std::vector< Point< T, N > > & pts
Definition nanoflann_adaptator.hpp:14
A fixed-size N-dimensional point/vector class.
Definition point.hpp:39