44         template<
typename T, 
typename CloudType>
 
   49                 const_cast<Vector&
>(this->
minBound) = cloud.topRows(this->dim).rowwise().minCoeff();
 
   50                 const_cast<Vector&
>(this->
maxBound) = cloud.topRows(this->dim).rowwise().maxCoeff();
 
   53                 for (
int i = 0; i < 
cloud.cols(); ++i)
 
   63         template<
typename T, 
typename CloudType>
 
   66                 const Vector maxRadii(Vector::Constant(query.cols(), maxRadius));
 
   67                 return knn(query, indices, dists2, maxRadii, k, epsilon, optionFlags);
 
   70         template<
typename T, 
typename CloudType>
 
   73                 checkSizesKnn(query, indices, dists2, k, optionFlags, &maxRadii);
 
   81                 for (
int c = 0; c < query.cols(); ++c)
 
   83                         const T maxRadius(maxRadii[c]);
 
   84                         const T maxRadius2(maxRadius * maxRadius);
 
   85                         const Vector& 
q(query.block(0,c,dim,1));
 
   87                         for (
int i = 0; i < this->cloud.cols(); ++i)
 
   89                                 const T dist(dist2<T>(this->cloud.block(0,i,dim,1), 
q));
 
   90                                 if ((dist <= maxRadius2) &&
 
   92                                         (allowSelfMatch || (dist > numeric_limits<T>::epsilon())))
 
   97                         heap.
getData(indices.col(c), dists2.col(c));
 
   99                 if (collectStatistics)
 
  100                         return (
unsigned long)query.cols() * (
unsigned long)this->cloud.cols();