72 : m_k(std::min(
k,kdtree.sample_count()-1)),
73 m_kdTreePoints(kdtree.points())
75 static_assert( std::is_same<typename Traits::DataPoint, typename KdTreeTraits::DataPoint>::value,
76 "KdTreeTraits::DataPoint is not equal to Traits::DataPoint" );
77 static_assert( std::is_same<typename Traits::PointContainer, typename KdTreeTraits::PointContainer>::value,
78 "KdTreeTraits::PointContainer is not equal to Traits::PointContainer" );
79 static_assert( std::is_same<typename Traits::IndexContainer, typename KdTreeTraits::IndexContainer>::value,
80 "KdTreeTraits::IndexContainer is not equal to Traits::IndexContainer" );
85 const int cloudSize = kdtree.point_count();
87 const int samplesSize = kdtree.sample_count();
88 eigen_assert(cloudSize == samplesSize);
91 m_indices.resize(cloudSize * m_k, -1);
93#pragma omp parallel for shared(kdtree, cloudSize) default(none)
94 for(
int i=0; i<cloudSize; ++i)
97 for(
auto n : kdtree.k_nearest_neighbors(
typename KdTreeTraits::IndexType(i),
98 typename KdTreeTraits::IndexType(m_k)))
100 m_indices[i * m_k + j] = n;