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<> が得られます。
私が間違っていることは何か分かりますか?