我在为 Delaunay 三角剖分中的每个边的端点获取 vertex_handle 时遇到了相当大的困难。由于我为此苦苦思考了几个小时,我想也许你们中的一个人可以帮助我解决这个看似微不足道的问题:
#include <iostream>
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Delaunay_triangulation_2.h>
using namespace std;
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
typedef CGAL::Delaunay_triangulation_2<K> Triangulation;
typedef Triangulation::Point Point;
typedef Triangulation::Edge_iterator Edge_iterator;
typedef Triangulation::Vertex_handle Vertex;
int main(){
Point p;
Triangulation t;
while(cin >> p)
t.insert(p);
// Iterate over edges
for(Edge_iterator ei=t.finite_edges_begin();ei!=t.finite_edges_end(); ei++){
// Get a vertex from the edge
Vertex vs = ei->source();
}
}
根据取消引用 Edge_iterator 的文档,我应该得到一个 Edge_handle 和 Edge_handle 应该有成员 source() 和 target() 来简单地获取端点,但它不会编译并且似乎是错误的。像上面这样的取消引用会给我一个没有这些成员函数的 pair<>。
知道我做错了什么吗?