2016-03-09 9 views
0

Я использую модуль K_neighbor_search CGAL для решения проблемы поиска ближайшего соседа. Это приятно и легко использовать. Код примера показывает, что с учетом точки запроса он может найти ближайшую соседнюю точку из набора точек, а также расстояния. Тем не менее, я могу получить только точку ближайшего соседа. Я не знаю, как получить индекс точки, найденный алгоритмом. Например, я использую следующий код,Как я могу получить индекс ближайшей точки, когда я использую CGAL :: K_neighbor_search для поиска ближайшего соседей?

std::list<Point_d> points; 
Tree tree(points.begin(), points.end()); 
Neighbor_search search(tree, query, N); 
for(Neighbor_search::iterator it = search.begin(); it != search.end(); ++it) 
{ 
    std::cout << "Point: " << it->first << "\n"; 
    std::cout << "Distance: " << std::sqrt(it->second) << "\n"; 
} 

результат выглядит следующим образом:

точки: 222 129 161

Расстояние: 189.307

Но как Я получаю индекс точки результата? Что касается причины этого вопроса, я хочу получить нормальную точку ближайшего соседа, поэтому мне нужно обратиться к этой точке. Может ли кто-нибудь мне помочь?

ответ

0

Если вы хотите использовать индексы непосредственно в kd-дереве, вы можете посмотреть this example. Точки сортируются во внешнем векторе, а kd-дерево использует индексы для обращения к внутренним хранилищам точек.