使用CGAL::K_neighbor_search做最近邻搜索时,如何获取最近点的索引?

How can I get the index of the Nearest Point when I use CGAL::K_neighbor_search to do the Nearest Neighbor Search?

我正在使用 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";
}

结果如下:

Point: 222 129 161

Distance: 189.307

但是如何得到结果点的索引呢?至于这道题的原因,想获取最近邻点的法线,所以需要引用点。 有人可以帮我吗?

如果您想直接在 kd-tree 中使用索引,您可以查看 this example。 点在外部向量中排序,kd-tree 使用索引来引用内部存储的点。