Tengo bastante dificultad para obtener un vertex_handle para cada uno de los puntos finales de un borde en una triangulación Delaunay. Desde que golpeé la cabeza contra esto durante varias horas pensé que tal vez uno de ustedes me podría ayudar con este problema aparentemente trivial:Obteniendo un vertex_handle desde 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();
}
}
De acuerdo con la documentación dereferenciar una Edge_iterator que debería obtener un Edge_handle y Edge_handle deben tener miembros source() y target() para obtener simplemente los puntos finales, pero no se compilará y parece estar mal. Deredecing como el anterior me dará un par <> que no tiene esas funciones miembro.
¿Alguna idea de lo que estoy haciendo mal?
¿Dónde está la compilación que falla? – payne
Es que (ei *) es de tipo par que obviamente no tiene una fuente(). – cdecker