Mam dość trudności z uzyskaniem vertex_handle dla każdego z końcowych punktów krawędzi w triangulacji Delaunay. Ponieważ ja młotkiem głowę przed tym przez kilka godzin Myślałem, że może ktoś z was może mi pomóc z tym pozornie błahego problemu:Uzyskiwanie polecenia vertex_handle od argumentu 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();
}
}
Zgodnie z dokumentacją dereferencing się Edge_iterator powinienem dostać Edge_handle i Edge_handle powinny mieć członkowie source() i target(), aby po prostu uzyskać punkty końcowe, ale nie będą się kompilować i wydają się błędne. Derefencing jak wyżej da mi parę <> która nie ma tych funkcji członka.
Każdy pomysł, co robię źle?
Gdzie kompilacja się nie udała? – payne
Jest to, że (ei *) jest typu pary, która oczywiście nie ma źródła(). – cdecker