Sto riscontrando alcune difficoltà nel trovare un vertex_handle per ciascuno dei punti finali di un bordo in una triangolazione di Delaunay. Da quando ho martellato la testa contro questo per diverse ore ho pensato che forse uno di voi ragazzi mi potrebbe aiutare con questo problema apparentemente banale:Ottenere un vertex_handle da un edge_iterator
#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();
}
}
Secondo la documentazione dereferenziazione un Edge_iterator dovrei ottenere un Edge_handle e Edge_handle dovrebbero avere i membri source() e target() ottengono semplicemente gli endpoint, ma non si compilano e sembrano sbagliati. Derefencing come sopra mi darà una coppia <> che non ha quelle funzioni membro.
Qualche idea su cosa sto facendo male?
Dove fallisce la compilazione? – payne
È che (ei *) è di tipo coppia che ovviamente non ha una fonte(). – cdecker