/// \defgroup PkgPeriodic2Triangulation2Ref Reference Manual

/// \defgroup PkgPeriodic2Triangulation2Concepts Concepts
/// \ingroup PkgPeriodic2Triangulation2Ref

/// \defgroup PkgPeriodic2Triangulation2MainClasses Main Classes
/// \ingroup PkgPeriodic2Triangulation2Ref

/// \defgroup PkgPeriodic2Triangulation2TraitsClasses Traits Classes
/// \ingroup PkgPeriodic2Triangulation2Ref

/// \defgroup PkgPeriodic2Triangulation2VertexFaceClasses Vertex and Face Classes
/// \ingroup PkgPeriodic2Triangulation2Ref

/// \defgroup PkgPeriodic2Triangulation2Enums Enums
/// \ingroup PkgPeriodic2Triangulation2Ref

/*! Draw.
\cgalInclude{CGAL/draw_periodic_2_triangulation_2.h}
*/
/// \defgroup PkgDrawPeriodic2Triangulation2 Draw a 2D Periodic Triangulation
/// \ingroup PkgPeriodic2Triangulation2Ref

/*!
\addtogroup PkgPeriodic2Triangulation2Ref

\cgalPkgDescriptionBegin{2D Periodic Triangulations,PkgPeriodic2Triangulation2}
\cgalPkgPicture{Periodic_2_triangulation_2/fig/p2Delaunay2_thumb.png}

\cgalPkgSummaryBegin
\cgalPkgAuthor{Nico Kruithof}
\cgalPkgDesc{This package allows to build and handle triangulations of point sets in the two dimensional flat torus. Triangulations are built incrementally and can be modified by insertion or removal of vertices. They offer point location facilities.  The package provides Delaunay triangulations and offers nearest neighbor queries and primitives to build the dual Voronoi diagrams.}
\cgalPkgManuals{Chapter_2D_Periodic_Triangulations,PkgPeriodic2Triangulation2Ref}
\cgalPkgSummaryEnd

\cgalPkgShortInfoBegin
\cgalPkgSince{4.3}
\cgalPkgDependsOn{\ref PkgTriangulation2}
\cgalPkgBib{cgal:k-pt2-13}
\cgalPkgLicense{\ref licensesGPL "GPL"}
\cgalPkgDemo{Periodic Delaunay Triangulation,Periodic_2_Delaunay_triangulation_2.zip}
\cgalPkgShortInfoEnd

\cgalPkgDescriptionEnd

The main classes of the 2D Periodic Triangulation package are
`CGAL::Periodic_2_triangulation_2` and
`CGAL::Periodic_2_Delaunay_triangulation_2`. They contain functionality
to access triangulations and to run queries on
them. `CGAL::Periodic_2_Delaunay_triangulation_2` can construct and
modify Delaunay triangulations. It takes the geometric traits as well
as the triangulation data structure as template parameters.

The geometric traits class must be a model of the concept
`Periodic_2DelaunayTriangulationTraits_2`. It contains all
predicates and constructions that are needed by the functions in the
triangulation classes.

The package uses `CGAL::Triangulation_data_structure_2` to represent the
triangulation. The faces and vertices need to be models of the
concepts `Periodic_2TriangulationFaceBase_2` and
`TriangulationVertexBase_2`, respectively.
A triangulation is stored as a collection of vertices and faces that
are linked together through incidence and adjacency relations. Each
face gives access to its three incident vertices and to its three
adjacent faces. Each vertex gives access to one of its incident
faces.

The three vertices of a face are indexed with 0, 1, and 2 in positive
orientation, the positive orientation being defined by the orientation
of the underlying space \f$ \mathbb T_c^3\f$. The neighbors of a face are
also indexed with 0, 1, 2 in such a way that the neighbor indexed
by \f$ i\f$ is opposite to the vertex with the same index. See
\cgalFigureRef{P2Triangulation2figorient}.

In order to be able to specify the triangle that contain vertices
both inside and outside the original domain we store additional
offset information for each vertex of a face. These offsets are models
of the concept `Periodic_2Offset_2`.

\cgalClassifedRefPages

\cgalCRPSection{Concepts}

- `Periodic_2TriangulationTraits_2`
- `Periodic_2DelaunayTriangulationTraits_2`
- `Periodic_2TriangulationFaceBase_2`
- `Periodic_2TriangulationVertexBase_2`
- `Periodic_2Offset_2`

\cgalCRPSection{Classes}

\cgalCRPSubsection{Main Classes}

- `CGAL::Periodic_2_triangulation_2<PT,TDS>`
- `CGAL::Periodic_2_Delaunay_triangulation_2<PT,TDS>`
- `CGAL::Periodic_2_triangulation_hierarchy_2<PTr>`
- `CGAL::Periodic_2_triangulation_face_base_2<>`
- `CGAL::Periodic_2_triangulation_vertex_base_2<>`
- `CGAL::Periodic_2_offset_2`

\cgalCRPSubsection{Traits Classes}

- `CGAL::Periodic_2_triangulation_traits_2<Traits,Periodic_2Offset_2>`
- `CGAL::Periodic_2_Delaunay_triangulation_traits_2<Traits,Periodic_2Offset_2>`

\cgalCRPSection{Enums}

- `CGAL::Periodic_2_triangulation_2::Iterator_type`
- `CGAL::Periodic_2_triangulation_2::Locate_type`

\cgalCRPSection{Draw 2D Periodic Triangulation}
- \link PkgDrawPeriodic2Triangulation2 CGAL::draw<P2T2>() \endlink
- `GraphicsSceneOptionsPeriodic2Triangulation2`
- `CGAL::Graphics_scene_options_periodic_2_triangulation_2`

*/

