39 #ifndef PCL_KDTREE_KDTREE_H_
40 #define PCL_KDTREE_KDTREE_H_
43 #include <pcl/pcl_macros.h>
44 #include <pcl/point_cloud.h>
45 #include <pcl/point_representation.h>
46 #include <pcl/common/io.h>
47 #include <pcl/common/copy_point.h>
55 template <
typename Po
intT>
59 typedef boost::shared_ptr <std::vector<int> >
IndicesPtr;
71 typedef boost::shared_ptr<KdTree<PointT> >
Ptr;
72 typedef boost::shared_ptr<const KdTree<PointT> >
ConstPtr;
102 inline PointCloudConstPtr
139 std::vector<int> &k_indices, std::vector<float> &k_sqr_distances)
const = 0;
159 std::vector<int> &k_indices, std::vector<float> &k_sqr_distances)
const
161 assert (index >= 0 && index < static_cast<int> (cloud.
points.size ()) &&
"Out-of-bounds error in nearestKSearch!");
174 template <
typename Po
intTDiff>
inline int
176 std::vector<int> &k_indices, std::vector<float> &k_sqr_distances)
const
202 std::vector<int> &k_indices, std::vector<float> &k_sqr_distances)
const
206 assert (index >= 0 && index < static_cast<int> (
input_->points.size ()) &&
"Out-of-bounds error in nearestKSearch!");
211 assert (index >= 0 && index < static_cast<int> (
indices_->size ()) &&
"Out-of-bounds error in nearestKSearch!");
228 std::vector<float> &k_sqr_distances,
unsigned int max_nn = 0)
const = 0;
249 std::vector<int> &k_indices, std::vector<float> &k_sqr_distances,
250 unsigned int max_nn = 0)
const
252 assert (index >= 0 && index < static_cast<int> (cloud.
points.size ()) &&
"Out-of-bounds error in radiusSearch!");
253 return (
radiusSearch(cloud.
points[index], radius, k_indices, k_sqr_distances, max_nn));
266 template <
typename Po
intTDiff>
inline int
267 radiusSearchT (
const PointTDiff &point,
double radius, std::vector<int> &k_indices,
268 std::vector<float> &k_sqr_distances,
unsigned int max_nn = 0)
const
272 return (
radiusSearch (p, radius, k_indices, k_sqr_distances, max_nn));
296 std::vector<float> &k_sqr_distances,
unsigned int max_nn = 0)
const
300 assert (index >= 0 && index < static_cast<int> (
input_->points.size ()) &&
"Out-of-bounds error in radiusSearch!");
301 return (
radiusSearch (
input_->points[index], radius, k_indices, k_sqr_distances, max_nn));
305 assert (index >= 0 && index < static_cast<int> (
indices_->size ()) &&
"Out-of-bounds error in radiusSearch!");
367 #endif //#ifndef _PCL_KDTREE_KDTREE_H_