aptypr
aptypr

Reputation: 417

How to work with cgal circulators?

I'm trying to make delaunay triangulation of point set, find nearest point to input point, and get it's incident vertices, but somehow following code doesn't work.

#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Delaunay_triangulation_2.h>
#include <fstream>
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
typedef CGAL::Delaunay_triangulation_2<K> Triangulation;
typedef Triangulation::Edge_iterator Edge_iterator;
typedef Triangulation::Point Point;
typedef Triangulation::Vertex_handle Vertex_handle;
typedef Triangulation::Vertex_circulator Vertex_circulator;
int main( )
{
  std::ifstream in("data.txt");
  assert(in);
  std::istream_iterator<Point> begin(in);
  std::istream_iterator<Point> end;
  Triangulation T;
  T.insert(begin, end);
  std::cout << T.number_of_vertices() <<std::endl;
  Vertex_handle handle = T.nearest_vertex(Point(1, 1));
  std::cout << handle->point() << std::endl;
  std::cout<<"incidents: \n" << std::endl;
  Vertex_circulator circulator = T.incident_vertices(handle), done(circulator);
  do
    {
      std::cout << circulator->point() << std::endl;
    } while(++circulator != done);
  return 0;
}

For example if data.txt is

2 3
1 1
1 0

output is

3
1 1
incidents:

1 0
2 3
2.02461e-307 6.94896e-308

Why do I have last line?

Upvotes: 6

Views: 1645

Answers (1)

sloriot
sloriot

Reputation: 6263

The 2D triangulations of CGAL have an infinite vertex connected to all the vertices of the convex hull (see the user manual for details).

You can use the is_infinite function to test if a simplex is infinite.

Upvotes: 7

Related Questions