Edits to account for Mael's comment from last revision

This commit is contained in:
Iordan Iordanov 2018-11-16 23:28:08 +01:00
parent 494a5cd97c
commit dfad7cc34f
1 changed files with 10 additions and 19 deletions

View File

@ -11,7 +11,10 @@ namespace CGAL {
\cgalAutoToc \cgalAutoToc
\author Iordan Iordanov & Monique Teillaud \author Iordan Iordanov & Monique Teillaud
\image html new-triangulation-350px.png <center>
<img src="new-triangulation-350px.png" style="max-width:50%; width=50%;"/>
</center>
This package allows to compute Delaunay triangulations of the Bolza surface, which is the This package allows to compute Delaunay triangulations of the Bolza surface, which is the
most symmetric surface of genus 2. The Bolza surface is a hyperbolic closed compact orientable surface. most symmetric surface of genus 2. The Bolza surface is a hyperbolic closed compact orientable surface.
@ -34,15 +37,11 @@ Consider the regular hyperbolic octagon \f$ \mathcal D_O \f$ centered at the ori
all angles equal to \f$ \pi/4\f$ that is shown in all angles equal to \f$ \pi/4\f$ that is shown in
\cgalFigureRef{P4HTriangulationOctagonId} - Left. \cgalFigureRef{P4HTriangulationOctagonId} - Left.
Note that \f$\mathcal D_O\f$ is unique up to rotation, and cannot Note that \f$\mathcal D_O\f$ is unique up to rotation, and cannot
be scaled, since this operation would change its angles. be scaled, since this operation would change its angles. Consider the
Now, consider the
four hyperbolic translations \f$ a,b,c,d\f$ with their respective inverses \f$\overline{a}, four hyperbolic translations \f$ a,b,c,d\f$ with their respective inverses \f$\overline{a},
\overline{b}, \overline{c}, \overline{d}\f$ that identify the opposite sides of \overline{b}, \overline{c}, \overline{d}\f$ that identify the opposite sides of
\f$ \mathcal D_O \f$. The axes of these translations are diameters of the Poincaré disk. \f$ \mathcal D_O \f$. The axes of these translations are diameters of the Poincaré disk.
See \cgalFigureRef{P4HTriangulationOctagonId} - Left. See \cgalFigureRef{P4HTriangulationOctagonId} - Left. The four translations
The four translations
\f$a, b, c, d\f$ generate a (non-commutative) discrete group of orientation-preserving isometries, with \f$a, b, c, d\f$ generate a (non-commutative) discrete group of orientation-preserving isometries, with
finite presentation finite presentation
\f[ \mathcal{G} = \left< a,b,c,d \; \bigg| \; \f[ \mathcal{G} = \left< a,b,c,d \; \bigg| \;
@ -79,7 +78,6 @@ onto \f$\mathcal M\f$.
By definition, all points of \f$\mathbb H^2\f$ that belong to the same By definition, all points of \f$\mathbb H^2\f$ that belong to the same
orbit under the action of \f$\mathcal G\f$ project by \f$\pi\f$ onto orbit under the action of \f$\mathcal G\f$ project by \f$\pi\f$ onto
the same point of the surface \f$\mathcal M\f$. the same point of the surface \f$\mathcal M\f$.
The half-open octagon \f$\mathcal D\f$ shown in The half-open octagon \f$\mathcal D\f$ shown in
\cgalFigureRef{P4HTriangulationOctagonId} - Right contains exactly one \cgalFigureRef{P4HTriangulationOctagonId} - Right contains exactly one
<i>representative</i> of each point of \f$\mathcal{M}\f$; <i>representative</i> of each point of \f$\mathcal{M}\f$;
@ -130,7 +128,7 @@ outside \f$\mathcal D\f$. Such faces can be uniquely specified by
three pairs of points in \f$\mathcal D\f$ and (reduced) translations three pairs of points in \f$\mathcal D\f$ and (reduced) translations
of \f$\mathcal{G}\f$; points in the original domain are paired with of \f$\mathcal{G}\f$; points in the original domain are paired with
the identity translation \f$\mathbb 1\f$. The underlying combinatorial the identity translation \f$\mathbb 1\f$. The underlying combinatorial
triangulation is a \ref PkgTDS2Summary, enriched in each face by the triangulation is a \ref PkgTDS2, enriched in each face by the
three translations that are paired with the point in each vertex. See three translations that are paired with the point in each vertex. See
\cgalFigureRef{P4HTriangulationOrientationDS}. \cgalFigureRef{P4HTriangulationOrientationDS}.
@ -239,10 +237,6 @@ dummy points necessary to guarantee that the triangulation is a simplicial compl
\section P4HT2_design Software Design \section P4HT2_design Software Design
\cgalModifBegin
TODO enlever les redondances dans cette section et améliorer la structure [modified, à discuter]
\cgalModifEnd
The main class of this package is `Periodic_4_hyperbolic_Delaunay_triangulation_2`, which The main class of this package is `Periodic_4_hyperbolic_Delaunay_triangulation_2`, which
implements Delaunay triangulations of the Bolza surface \f$\mathcal M\f$. The prefix implements Delaunay triangulations of the Bolza surface \f$\mathcal M\f$. The prefix
"Periodic_4" emphasizes that the triangulation in the universal covering \f$\mathbb H^2\f$ "Periodic_4" emphasizes that the triangulation in the universal covering \f$\mathbb H^2\f$
@ -279,14 +273,11 @@ the triangulation. See Section \ref P4HT2_datastructure.
\subsection P4HT2_traits The Geometric Traits Parameter \subsection P4HT2_traits The Geometric Traits Parameter
\cgalModifBegin
The geometric traits class must fulfill the requirements described in the concept The geometric traits class must fulfill the requirements described in the concept
`Periodic_4HyperbolicDelaunayTriangulationTraits_2`. It must provide all necessary objects, `Periodic_4HyperbolicDelaunayTriangulationTraits_2`. It must provide all necessary objects,
predicates, and constructions for the computation of Delaunay triangulations of the Bolza surface. predicates, and constructions for the computation of Delaunay triangulations of the Bolza surface.
Moreover, the traits class must represent hyperbolic translations of the group \f$\mathcal G\f$ Moreover, the traits class must represent hyperbolic translations of the group \f$\mathcal G\f$
via the class `Hyperbolic_octagon_translation`. via the class `Hyperbolic_octagon_translation`.
\cgalModifEnd
A model for the concept `Periodic_4HyperbolicDelaunayTriangulationTraits_2` offered by this A model for the concept `Periodic_4HyperbolicDelaunayTriangulationTraits_2` offered by this
package is the class `Periodic_4_hyperbolic_Delaunay_triangulation_traits_2`. The class requires package is the class `Periodic_4_hyperbolic_Delaunay_triangulation_traits_2`. The class requires
@ -309,8 +300,8 @@ This model is itself parameterized by a vertex
base class and a face base class, which gives the possibility to customize the vertices and base class and a face base class, which gives the possibility to customize the vertices and
faces used by the triangulation data structure. To represent periodic hyperbolic triangulations, faces used by the triangulation data structure. To represent periodic hyperbolic triangulations,
the face base and vertex base classes must be models of the concepts the face base and vertex base classes must be models of the concepts
`Periodic_4HyperbolicTriangulationDSFaceBase_2` and `Periodic_4HyperbolicTriangulationFaceBase_2` and
`Periodic_4HyperbolicTriangulationDSVertexBase_2`, respectively. `Periodic_4HyperbolicTriangulationVertexBase_2`, respectively.
The default value for the triangulation data structure parameter in the class The default value for the triangulation data structure parameter in the class
`Periodic_4_hyperbolic_Delaunay_triangulation_2` is `Periodic_4_hyperbolic_Delaunay_triangulation_2` is
@ -370,7 +361,7 @@ have been executed on two machines:
</center> </center>
Another experiment shows that, on average, all dummy points are removed Another experiment shows that, on average, all dummy points are removed
from the triangulation with the insertion of less than 200 random points uniformly distributed from the triangulation with the insertion of fewer than 200 random points uniformly distributed
in the unit disk with respect to the Euclidean metric \cgalCite{cgal:it-idtbs-17}. in the unit disk with respect to the Euclidean metric \cgalCite{cgal:it-idtbs-17}.
We start with an empty triangulation of the Bolza We start with an empty triangulation of the Bolza
surface (i.e., initialized with only the dummy points), and we start inserting random points surface (i.e., initialized with only the dummy points), and we start inserting random points