#include #include #include #include template < class GT, class Vb = CGAL::Triangulation_vertex_base_3 > class My_vertex_base : public Vb { public: typedef typename Vb::Vertex_handle Vertex_handle; typedef typename Vb::Cell_handle Cell_handle; typedef typename Vb::Point Point; template < class TDS2 > struct Rebind_TDS { typedef typename Vb::template Rebind_TDS::Other Vb2; typedef My_vertex_base Other; }; My_vertex_base() {} My_vertex_base(const Point& p) : Vb(p) {} My_vertex_base(const Point& p, Cell_handle c) : Vb(p, c) {} Vertex_handle vh; Cell_handle ch; }; typedef CGAL::Exact_predicates_inexact_constructions_kernel K; typedef CGAL::Delaunay_triangulation_cell_base_3 Cb; typedef CGAL::Triangulation_data_structure_3, Cb> Tds; typedef CGAL::Delaunay_triangulation_3 Delaunay; typedef Delaunay::Vertex_handle Vertex_handle; typedef Delaunay::Point Point; int main() { Delaunay T; Vertex_handle v0 = T.insert(Point(0,0,0)); Vertex_handle v1 = T.insert(Point(1,0,0)); Vertex_handle v2 = T.insert(Point(0,1,0)); Vertex_handle v3 = T.insert(Point(0,0,1)); Vertex_handle v4 = T.insert(Point(2,2,2)); Vertex_handle v5 = T.insert(Point(-1,0,1)); // Now we can link the vertices as we like. v0->vh = v1; v1->vh = v2; v2->vh = v3; v3->vh = v4; v4->vh = v5; v5->vh = v0; return 0; }