template struct nanoflann::KDTreeEigenMatrixAdaptor¶
An L2-metric KD-tree adaptor for working with data directly stored in an Eigen Matrix, without duplicating the data storage.
Each row in the matrix represents a point in the state space.
Example of usage:
Eigen::Matrix<num_t,Dynamic,Dynamic> mat; // Fill out "mat"... typedef KDTreeEigenMatrixAdaptor< Eigen::Matrix<num_t,Dynamic,Dynamic> > my_kd_tree_t; const int max_leaf = 10; my_kd_tree_t mat_index(dimdim, mat, max_leaf ); mat_index.index->buildIndex(); mat_index.index->...
Parameters:
DIM |
If set to >0, it specifies a compile-time fixed dimensionality for the points in the data set, allowing more compiler optimizations. |
Distance |
The distance metric to use: nanoflann::metric_L1, nanoflann::metric_L2, nanoflann::metric_L2_Simple, etc. |
#include <nanoflann.hpp> template <class MatrixType, int DIM = -1, class Distance = nanoflann::metric_L2> struct KDTreeEigenMatrixAdaptor { // typedefs typedef KDTreeEigenMatrixAdaptor<MatrixType, DIM, Distance> self_t; typedef MatrixType::Scalar num_t; typedef MatrixType::Index IndexType; typedef Distance::template traits<num_t, self_t>::distance_t metric_t; typedef KDTreeSingleIndexAdaptor<metric_t, self_t, DIM, IndexType> index_t; // fields index_t* index; const MatrixType& m_data_matrix; // construction KDTreeEigenMatrixAdaptor(const int dimensionality, const MatrixType& mat, const int leaf_max_size = 10); // methods const self_t& derived() const; self_t& derived(); size_t kdtree_get_point_count() const; num_t kdtree_distance( const num_t* p1, const IndexType idx_p2, IndexType size ) const; num_t kdtree_get_pt( const IndexType idx, int dim ) const; template <class BBOX> bool kdtree_get_bbox(BBOX&) const; void query( const num_t* query_point, const size_t num_closest, IndexType* out_indices, num_t* out_distances_sq, const int = 10 ) const; };
Construction¶
KDTreeEigenMatrixAdaptor( const int dimensionality, const MatrixType& mat, const int leaf_max_size = 10 )
The kd-tree index for the user to call its methods as usual with any other FLANN index.
Constructor: takes a const ref to the matrix object with the data points
Methods¶
void query( const num_t* query_point, const size_t num_closest, IndexType* out_indices, num_t* out_distances_sq, const int = 10 ) const
Query for the num_closest closest points to a given point (entered as query_point[0:dim-1]).
Note that this is a short-cut method for index->findNeighbors(). The user can also call index->… methods as desired. nChecks_IGNORED is ignored but kept for compatibility with the original FLANN interface.