我有一套积分。我想用CGAL计算它们的Delaunay三角剖分,然后让邻居回来。
输入:
p1, p2, p3, p4, ...
输出:
p1-p2, p1-p4, ....
我找到了2或3维这个问题的答案。但是我需要至少6-8维。我无法弄清楚。较低维度的建议答案使用edges_iterator。这不是针对d维实现的。文档也没有帮助我......
更新 到目前为止我所拥有的是,遗憾的是它会在一些迭代后导致段错误
T t(D);
t.insert(points.begin(), points.end());
for(t_iterator ei = t.finite_full_cells_begin(); ei != t.finite_full_cells_end(); ++ei) {
for (v_iterator vi = *ei->vertices_begin(); vi != *ei->vertices_end(); ++vi) {
std::cout << *vi << std::endl;
}
}
UPDATE2 : 我最终使用了scipy的三角测量法。在我看来,更容易使用和更好地记录
答案 0 :(得分:0)
单元格具有到其顶点的链接,并且每个边缘都是单元格的一部分,因此您可以迭代单元格并派生边缘列表(具有冗余)。请注意,如果您只需要Delaunay图,则在高维中,如果使用线性编程形成Delaunay边,则测试每对点可能会更快。
答案 1 :(得分:0)
这里有两篇论文提出了线性编程技术来计算Delaunay图(相邻的Voronoi单元对)。 CGAL很可能无法在超过6个维度上计算Delaunay,因为它计算完整的三角剖分(边,三角形,四面体......)。
A method for examining vector quantizer structures. Agrell IEEE 1993