7 #include "imstkGridBasedNeighborSearch.h" 8 #include "imstkSpatialHashTableSeparateChaining.h" 9 #include "imstkNeighborSearch.h" 10 #include "imstkParallelUtils.h" 15 m_Method(searchMethod), m_SearchRadius(searchRadius)
17 if (m_Method == Method::UniformGridBasedSearch)
19 m_GridBasedSearcher = std::make_shared<GridBasedNeighborSearch>();
20 m_GridBasedSearcher->setSearchRadius(m_SearchRadius);
24 m_SpatialHashSearcher = std::make_shared<SpatialHashTableSeparateChaining>();
25 m_SpatialHashSearcher->setCellSize(m_SearchRadius, m_SearchRadius, m_SearchRadius);
32 m_SearchRadius = searchRadius;
33 if (m_Method == Method::UniformGridBasedSearch)
35 m_GridBasedSearcher->setSearchRadius(m_SearchRadius);
39 m_SpatialHashSearcher->setCellSize(m_SearchRadius, m_SearchRadius, m_SearchRadius);
43 std::vector<std::vector<size_t>>
46 std::vector<std::vector<size_t>> result;
60 if (m_Method == Method::UniformGridBasedSearch)
62 m_GridBasedSearcher->getNeighbors(result, setA, setB);
66 m_SpatialHashSearcher->clear();
67 m_SpatialHashSearcher->insertPoints(setB);
69 ParallelUtils::parallelFor(setA.size(),
72 m_SpatialHashSearcher->getPointsInSphere(result[p], setA[p], m_SearchRadius);
std::vector< std::vector< size_t > > getNeighbors(const VecDataArray< double, 3 > &points)
Search neighbors for each points within the search radius.
void setSearchRadius(const double searchRadius)
Set the search radius.
NeighborSearch(Method searchMethod, double searchRadius=0.0)
Constructor.