class mrpt::maps::NearestNeighborsCapable
Virtual interface for maps having the capability of searching the closest neighbor(s) of a given query 2D or 3D point.
Note this is more generic than mrpt::math::KDTreeCapable since it does not assume the use of KD-trees, and it is also non templatized, so users can use dynamic casting to interact with maps in a generic way.
New in MRPT 2.11.3
#include <mrpt/maps/NearestNeighborsCapable.h> class NearestNeighborsCapable { public: // construction NearestNeighborsCapable(); // methods virtual bool nn_has_indices_or_ids() const = 0; virtual size_t nn_index_count() const = 0; virtual bool nn_single_search( const mrpt::math::TPoint3Df& query, mrpt::math::TPoint3Df& result, float& out_dist_sqr, uint64_t& resultIndexOrIDOrID ) const = 0; virtual bool nn_single_search( const mrpt::math::TPoint2Df& query, mrpt::math::TPoint2Df& result, float& out_dist_sqr, uint64_t& resultIndexOrIDOrID ) const = 0; virtual void nn_multiple_search( const mrpt::math::TPoint3Df& query, const size_t N, std::vector<mrpt::math::TPoint3Df>& results, std::vector<float>& out_dists_sqr, std::vector<uint64_t>& resultIndicesOrIDs ) const = 0; virtual void nn_multiple_search( const mrpt::math::TPoint2Df& query, const size_t N, std::vector<mrpt::math::TPoint2Df>& results, std::vector<float>& out_dists_sqr, std::vector<uint64_t>& resultIndicesOrIDs ) const = 0; virtual void nn_radius_search( const mrpt::math::TPoint3Df& query, const float search_radius_sqr, std::vector<mrpt::math::TPoint3Df>& results, std::vector<float>& out_dists_sqr, std::vector<uint64_t>& resultIndicesOrIDs, size_t maxPoints = 0 ) const = 0; virtual void nn_radius_search( const mrpt::math::TPoint2Df& query, const float search_radius_sqr, std::vector<mrpt::math::TPoint2Df>& results, std::vector<float>& out_dists_sqr, std::vector<uint64_t>& resultIndicesOrIDs, size_t maxPoints = 0 ) const = 0; }; // direct descendants template <typename voxel_node_t, typename occupancy_t = int8_t> class CVoxelMapOccupancyBase; class COccupancyGridMap2D; class COccupancyGridMap3D; class CPointsMap;
Methods
virtual bool nn_has_indices_or_ids() const = 0
Returns true if the rest of nn_*
methods will populate the output indices values with 0-based contiguous indices.
Returns false if indices are actually sparse ID numbers without any expectation of they be contiguous or start near zero.
virtual size_t nn_index_count() const = 0
If nn_has_indices_or_ids() returns true
, this must return the number of “points” (or whatever entity) the indices correspond to.
Otherwise, the return value should be ignored.
virtual bool nn_single_search( const mrpt::math::TPoint3Df& query, mrpt::math::TPoint3Df& result, float& out_dist_sqr, uint64_t& resultIndexOrIDOrID ) const = 0
Search for the closest 3D point to a given one.
Parameters:
query |
The query input point. |
result |
The found closest point. |
out_dist_sqr |
The square Euclidean distance between the query and the returned point. |
resultIndexOrID |
The index or ID of the result point in the map. |
Returns:
True if successful, false if no point was found.
virtual void nn_multiple_search( const mrpt::math::TPoint3Df& query, const size_t N, std::vector<mrpt::math::TPoint3Df>& results, std::vector<float>& out_dists_sqr, std::vector<uint64_t>& resultIndicesOrIDs ) const = 0
Search for the N
closest 3D points to a given one.
Parameters:
query |
The query input point. |
results |
The found closest points. |
out_dists_sqr |
The square Euclidean distances between the query and the returned point. |
resultIndicesOrIDs |
The indices or IDs of the result points. |
virtual void nn_radius_search( const mrpt::math::TPoint3Df& query, const float search_radius_sqr, std::vector<mrpt::math::TPoint3Df>& results, std::vector<float>& out_dists_sqr, std::vector<uint64_t>& resultIndicesOrIDs, size_t maxPoints = 0 ) const = 0
Radius search for closest 3D points to a given one.
Parameters:
query |
The query input point. |
search_radius_sqr |
The search radius, squared. |
results |
The found closest points. |
out_dists_sqr |
The square Euclidean distances between the query and the returned point. |
resultIndicesOrIDs |
The indices or IDs of the result points. |
maxPoints |
If !=0, the maximum number of neigbors to return. |