40 #ifndef PCL_KDTREE_KDTREE_H_
41 #define PCL_KDTREE_KDTREE_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;
77 KdTree (
bool sorted =
true) : input_(), indices_(),
78 epsilon_(0.0f), min_pts_(1), sorted_(sorted),
114 point_representation_ = point_representation;
122 return (point_representation_);
138 std::vector<int> &k_indices, std::vector<float> &k_sqr_distances)
const = 0;
158 std::vector<int> &k_indices, std::vector<float> &k_sqr_distances)
const
160 assert (index >= 0 && index < static_cast<int> (cloud.
points.size ()) &&
"Out-of-bounds error in nearestKSearch!");
173 template <
typename Po
intTDiff>
inline int
175 std::vector<int> &k_indices, std::vector<float> &k_sqr_distances)
const
205 std::vector<int> &k_indices, std::vector<float> &k_sqr_distances)
const
207 if (indices_ == NULL)
209 assert (index >= 0 && index < static_cast<int> (input_->points.size ()) &&
"Out-of-bounds error in nearestKSearch!");
210 return (
nearestKSearch (input_->points[index], k, k_indices, k_sqr_distances));
214 assert (index >= 0 && index < static_cast<int> (indices_->size ()) &&
"Out-of-bounds error in nearestKSearch!");
215 return (
nearestKSearch (input_->points[(*indices_)[index]], k, k_indices, k_sqr_distances));
231 std::vector<float> &k_sqr_distances,
unsigned int max_nn = 0)
const = 0;
252 std::vector<int> &k_indices, std::vector<float> &k_sqr_distances,
253 unsigned int max_nn = 0)
const
255 assert (index >= 0 && index < static_cast<int> (cloud.
points.size ()) &&
"Out-of-bounds error in radiusSearch!");
256 return (
radiusSearch(cloud.
points[index], radius, k_indices, k_sqr_distances, max_nn));
269 template <
typename Po
intTDiff>
inline int
270 radiusSearchT (
const PointTDiff &point,
double radius, std::vector<int> &k_indices,
271 std::vector<float> &k_sqr_distances,
unsigned int max_nn = 0)
const
279 return (
radiusSearch (p, radius, k_indices, k_sqr_distances, max_nn));
303 std::vector<float> &k_sqr_distances,
unsigned int max_nn = 0)
const
305 if (indices_ == NULL)
307 assert (index >= 0 && index < static_cast<int> (input_->points.size ()) &&
"Out-of-bounds error in radiusSearch!");
308 return (
radiusSearch (input_->points[index], radius, k_indices, k_sqr_distances, max_nn));
312 assert (index >= 0 && index < static_cast<int> (indices_->size ()) &&
"Out-of-bounds error in radiusSearch!");
313 return (
radiusSearch (input_->points[(*indices_)[index]], radius, k_indices, k_sqr_distances, max_nn));
370 getName ()
const = 0;
374 #endif //#ifndef _PCL_KDTREE_KDTREE_H_