\( \newcommand{\E}{\mathrm{E}} \) \( \newcommand{\A}{\mathrm{A}} \) \( \newcommand{\R}{\mathrm{R}} \) \( \newcommand{\N}{\mathrm{N}} \) \( \newcommand{\Q}{\mathrm{Q}} \) \( \newcommand{\Z}{\mathrm{Z}} \) \( \def\ccSum #1#2#3{ \sum_{#1}^{#2}{#3} } \def\ccProd #1#2#3{ \sum_{#1}^{#2}{#3} }\)
CGAL 4.13 - 2D Segment Delaunay Graphs
SegmentDelaunayGraphDataStructure_2 Concept Reference

Definition

The concept SegmentDelaunayGraphDataStructure_2 refines the concept ApolloniusGraphDataStructure_2. In addition it provides two methods for the merging of two vertices joined by an edge of the data structure, and the splitting of a vertex into two. The method that merges two vertices, called join_vertices() identifies the two vertices and deletes their common two faces. The method that splits a vertex, called split_vertex() introduces a new vertex that shares an edge and two faces with the old vertex (see figure below). Notice that the join_vertices() and split_vertex() operations are complementary, in the sense that one reverses the action of the other.

sdg-join_split.png
Figure 48.1 The join and split operations. Left to right: The vertex v is split into \( v_1\) and \( v_2\). The faces \( f\) and \( g\) are inserted after \( f_1\) and \( f_2\), respectively, in the counter-clockwise sense. The vertices \( v_1\), \( v_2\) and the faces \( f\) and \( g\) are returned as a boost::tuple in that order. Right to left: The edge (f,i) is collapsed, and thus the vertices \( v_1\) and \( v_2\) are joined. The vertex v is returned.

We only describe the additional requirements with respect to the ApolloniusGraphDataStructure_2 concept.

Refines:
ApolloniusGraphDataStructure_2
Has Models:
CGAL::Triangulation_data_structure_2<Vb,Fb>
See also
TriangulationDataStructure_2
ApolloniusGraphDataStructure_2
SegmentDelaunayGraphVertexBase_2
TriangulationFaceBase_2

Modification

Vertex_handle join_vertices (Face_handle f, int i)
 Joins the vertices that are endpoints of the edge (f,i) and returns a vertex handle to common vertex.
 
boost::tuples::tuple< Vertex_handle, Vertex_handle, Face_handle, Face_handle > split_vertex (Vertex_handle v, Face_handle f1, Face_handle f2)
 Splits the vertex v into two vertices v1 and v2. More...
 

Member Function Documentation

◆ split_vertex()

boost::tuples::tuple<Vertex_handle, Vertex_handle, Face_handle, Face_handle> SegmentDelaunayGraphDataStructure_2::split_vertex ( Vertex_handle  v,
Face_handle  f1,
Face_handle  f2 
)

Splits the vertex v into two vertices v1 and v2.

The common faces f and g of v1 and v2 are created after (in the counter-clockwise sense) the faces f1 and f2. The 4-tuple (v1,v2,f,g) is returned (see Figure 48.1).