mirror of https://github.com/CGAL/cgal
Modifications to user manual to account for Mael's lates review; new figures included
This commit is contained in:
parent
54353573e5
commit
1c62012365
|
|
@ -6,6 +6,8 @@ EXAMPLE_PATH = ${CGAL_PACKAGE_DIR}/examples
|
||||||
|
|
||||||
PROJECT_NAME = "CGAL ${CGAL_DOC_VERSION} - 2D Hyperbolic Delaunay Triangulations"
|
PROJECT_NAME = "CGAL ${CGAL_DOC_VERSION} - 2D Hyperbolic Delaunay Triangulations"
|
||||||
|
|
||||||
|
HTML_EXTRA_STYLESHEET = ${CGAL_PACKAGE_DOC_DIR}/css/customstyle.css
|
||||||
|
|
||||||
HTML_EXTRA_FILES = ${CGAL_PACKAGE_DOC_DIR}/fig/ht-empty-disks.svg \
|
HTML_EXTRA_FILES = ${CGAL_PACKAGE_DOC_DIR}/fig/ht-empty-disks.svg \
|
||||||
${CGAL_PACKAGE_DOC_DIR}/fig/poincare-disk.svg \
|
${CGAL_PACKAGE_DOC_DIR}/fig/poincare-disk.svg \
|
||||||
${CGAL_PACKAGE_DOC_DIR}/fig/header.png \
|
${CGAL_PACKAGE_DOC_DIR}/fig/header.png \
|
||||||
|
|
|
||||||
|
|
@ -12,11 +12,11 @@ namespace CGAL {
|
||||||
\author Mikhail Bogdanov, Iordan Iordanov, and Monique Teillaud
|
\author Mikhail Bogdanov, Iordan Iordanov, and Monique Teillaud
|
||||||
|
|
||||||
<center>
|
<center>
|
||||||
<img src="header.png" style="max-width:60%; width=60%;"/>
|
<img src="header.png" style="max-width:50%; width=50%;"/>
|
||||||
</center>
|
</center>
|
||||||
|
|
||||||
This package enables the computation of Delaunay triangulations of point sets in the Poincaré
|
This package enables the computation of Delaunay triangulations of
|
||||||
disk model of the hyperbolic plane, as well as their dual objects.
|
point sets in the Poincaré disk model of the hyperbolic plane.
|
||||||
|
|
||||||
\section HT2_Poincare_model The Poincaré Disk Model of the Hyperbolic Plane
|
\section HT2_Poincare_model The Poincaré Disk Model of the Hyperbolic Plane
|
||||||
The Poincaré disk model represents the hyperbolic plane
|
The Poincaré disk model represents the hyperbolic plane
|
||||||
|
|
@ -26,13 +26,13 @@ H_\infty\f$ of points at infinity.
|
||||||
|
|
||||||
In this model, a hyperbolic line is either an arc of circle
|
In this model, a hyperbolic line is either an arc of circle
|
||||||
perpendicular to the unit circle or, if it passes through the origin,
|
perpendicular to the unit circle or, if it passes through the origin,
|
||||||
a diameter of the unit disk. A hyperbolic circle is a Euclidean circle
|
a diameter of the unit disk. A hyperbolic circle is a Euclidean
|
||||||
contained in the unit disk; however, its hyperbolic center and radius
|
circle contained in the unit disk; however, its hyperbolic center and radius
|
||||||
are not the same as its Euclidean center and radius.
|
are not the same as its Euclidean center and radius.
|
||||||
|
|
||||||
\cgalFigureAnchor{Hyperbolic_triangulation_2Poincare_disk}
|
\cgalFigureAnchor{Hyperbolic_triangulation_2Poincare_disk}
|
||||||
<center>
|
<center>
|
||||||
<img src="poincare-disk.svg" style="max-width:35%; width=35%;"/>
|
<img src="poincare-disk.svg" style="max-width:27%; width=27%;"/>
|
||||||
</center>
|
</center>
|
||||||
\cgalFigureCaptionBegin{Hyperbolic_triangulation_2Poincare_disk}
|
\cgalFigureCaptionBegin{Hyperbolic_triangulation_2Poincare_disk}
|
||||||
The Poincaré disk model for the hyperbolic plane. The figure shows
|
The Poincaré disk model for the hyperbolic plane. The figure shows
|
||||||
|
|
@ -58,31 +58,25 @@ are <i>hyperbolic</i>:
|
||||||
P\f$) passing through its endpoints is contained in \f$\mathbb
|
P\f$) passing through its endpoints is contained in \f$\mathbb
|
||||||
H^2\f$.
|
H^2\f$.
|
||||||
</ul>
|
</ul>
|
||||||
See \cgalFigureRef{Hyperbolic_triangulation_2Euclidean_vs_hyperbolic}.
|
|
||||||
|
In the Euclidean Delaunay triangulation, there is a bijection between
|
||||||
|
non-hyperbolic faces and non-hyperbolic edges \cgalCite{cgal:bdt-hdcvd-14}.
|
||||||
|
For an example of a hyperbolic Delaunay triangulation and the underlying Euclidean
|
||||||
|
Delaunay triangulation, as well as for an example of a non-hyperbolic Delaunay
|
||||||
|
edge, see \cgalFigureRef{Hyperbolic_triangulation_2Euclidean_vs_hyperbolic}.
|
||||||
|
|
||||||
\cgalFigureAnchor{Hyperbolic_triangulation_2Euclidean_vs_hyperbolic}
|
\cgalFigureAnchor{Hyperbolic_triangulation_2Euclidean_vs_hyperbolic}
|
||||||
<center>
|
<center>
|
||||||
<img src="hyperbolic-vs-euclidean.svg" style="max-width:35%; width=35%;"/>
|
<img src="hyperbolic-vs-euclidean.svg" style="max-width:27%; width=27%; display: inline-block; text-align:right;"/>
|
||||||
|
<img src="ht-empty-disks.svg" style="max-width:30%; width=30%; display: inline-block; text-align:left;"/>
|
||||||
</center>
|
</center>
|
||||||
\cgalFigureCaptionBegin{Hyperbolic_triangulation_2Euclidean_vs_hyperbolic}
|
\cgalFigureCaptionBegin{Hyperbolic_triangulation_2Euclidean_vs_hyperbolic}
|
||||||
The Euclidean (green) and hyperbolic (black) Delaunay triangulations
|
<b>Left:</b> The Euclidean (red) and hyperbolic (black) Delaunay triangulations
|
||||||
of a given set of points in the unit disk. Only the colored faces
|
of a given set of points in the unit disk. Only the colored faces
|
||||||
are faces of the hyperbolic Delaunay triangulation. The hyperbolic and Euclidean geometric embeddings of a
|
are faces of the hyperbolic Delaunay triangulation. The hyperbolic
|
||||||
Delaunay face that exists in both triangulations are different.
|
and Euclidean geometric embeddings of a Delaunay face that exists
|
||||||
\cgalFigureCaptionEnd
|
in both triangulations are different.
|
||||||
|
<b>Right:</b> The shaded face is non-hyperbolic. Its dashed edge is non-hyperbolic,
|
||||||
|
|
||||||
In the Euclidean Delaunay triangulation, there is a bijection between
|
|
||||||
non-hyperbolic faces and non-hyperbolic edges
|
|
||||||
\cgalCite{cgal:bdt-hdcvd-14}. See
|
|
||||||
\cgalFigureRef{Hyperbolic_triangulation_2Empty_disks}
|
|
||||||
|
|
||||||
\cgalFigureAnchor{Hyperbolic_triangulation_2Empty_disks}
|
|
||||||
<center>
|
|
||||||
<img src="ht-empty-disks.svg" style="max-width:35%; width=35%;"/>
|
|
||||||
</center>
|
|
||||||
\cgalFigureCaptionBegin{Hyperbolic_triangulation_2Empty_disks}
|
|
||||||
The shaded face is non-hyperbolic. Its dashed edge is non-hyperbolic,
|
|
||||||
as no empty circle through its endpoints is contained in
|
as no empty circle through its endpoints is contained in
|
||||||
\f$\mathbb H^2\f$. Its other two edges are hyperbolic.
|
\f$\mathbb H^2\f$. Its other two edges are hyperbolic.
|
||||||
\cgalFigureCaptionEnd
|
\cgalFigureCaptionEnd
|
||||||
|
|
@ -91,20 +85,20 @@ as no empty circle through its endpoints is contained in
|
||||||
\section HT2_Software_design Software Design
|
\section HT2_Software_design Software Design
|
||||||
From what was said above, it is natural that the class
|
From what was said above, it is natural that the class
|
||||||
`Hyperbolic_Delaunay_triangulation_2` privately inherits from the class
|
`Hyperbolic_Delaunay_triangulation_2` privately inherits from the class
|
||||||
`Delaunay_triangulation_2`. So, users are encouraged to look at Chapter
|
`Delaunay_triangulation_2`. Consequently, users are encouraged to look at Chapter
|
||||||
\ref Chapter_2D_Triangulations "2D Triangulation" of the CGAL manual to
|
\ref Chapter_2D_Triangulations "2D Triangulation" of the %CGAL manual to
|
||||||
know more in particular about the representation of triangulations in
|
know more in particular about the representation of triangulations in
|
||||||
CGAL and the flexibility of the design.
|
CGAL and the flexibility of the design.
|
||||||
|
|
||||||
The class `Hyperbolic_Delaunay_triangulation_2` has two template
|
The class `Hyperbolic_Delaunay_triangulation_2` has two template
|
||||||
parameters:
|
parameters:
|
||||||
<ul>
|
<ul>
|
||||||
<li> A geometric traits class `Gt`, which provides geometric
|
<li> A <b>geometric traits</b> class `Gt`, which provides geometric
|
||||||
primitives. The requirements on this first template parameter
|
primitives. The requirements on this first template parameter
|
||||||
are described by the concept
|
are described by the concept
|
||||||
`HyperbolicDelaunayTriangulationTraits_2`, which refines
|
`HyperbolicDelaunayTriangulationTraits_2`, which refines
|
||||||
`DelaunayTriangulationTraits_2`.
|
`DelaunayTriangulationTraits_2`.
|
||||||
<li> A triangulation data structure parameter, for which the
|
<li> A <b>triangulation data structure</b> parameter, for which the
|
||||||
requirements are described by the concept
|
requirements are described by the concept
|
||||||
`TriangulationDataStructure_2`. The default for this second template parameter
|
`TriangulationDataStructure_2`. The default for this second template parameter
|
||||||
is `Triangulation_data_structure_2< Triangulation_vertex_base_2<Gt>, Hyperbolic_triangulation_face_base_2<Gt> >`.
|
is `Triangulation_data_structure_2< Triangulation_vertex_base_2<Gt>, Hyperbolic_triangulation_face_base_2<Gt> >`.
|
||||||
|
|
@ -141,9 +135,9 @@ parameters against the insertion time in a Euclidean \cgal triangulation.
|
||||||
We generate 1 million random points, uniformly distributed in the unit disk with respect
|
We generate 1 million random points, uniformly distributed in the unit disk with respect
|
||||||
to the Euclidean metric. We insert the same set of points in three triangulations:
|
to the Euclidean metric. We insert the same set of points in three triangulations:
|
||||||
<ul>
|
<ul>
|
||||||
<li> a hyperbolic Delaunay triangulation with `CGAL::Hyperbolic_Delaunay_triangulation_CK_traits_2<>` as traits class;
|
<li> a hyperbolic Delaunay triangulation with `CGAL::Hyperbolic_Delaunay_triangulation_traits_2` (%CORE traits) as traits class;
|
||||||
<li> a hyperbolic Delaunay triangulation with `CGAL::Hyperbolic_Delaunay_triangulation_traits_2<>` as traits class;
|
<li> a hyperbolic Delaunay triangulation with `CGAL::Hyperbolic_Delaunay_triangulation_CK_traits_2` (CK traits) as traits class;
|
||||||
<li> a Euclidean Delaunay triangulation with `CGAL::Exact_predicates_inexact_constructions_kernel` as traits class.
|
<li> a Euclidean Delaunay triangulation with `CGAL::Exact_predicates_inexact_constructions_kernel` (EPICK) as traits class.
|
||||||
</ul>
|
</ul>
|
||||||
We create two instances of each type of triangulation. In one instance we insert the points one by one, which causes
|
We create two instances of each type of triangulation. In one instance we insert the points one by one, which causes
|
||||||
non-hyperbolic faces to be filtered out at each insertion. In the other instance we insert the points via iterator
|
non-hyperbolic faces to be filtered out at each insertion. In the other instance we insert the points via iterator
|
||||||
|
|
@ -161,9 +155,9 @@ executed on two machines:
|
||||||
<caption>Table 1: Comparison of insertion times of 1 million random points</caption>
|
<caption>Table 1: Comparison of insertion times of 1 million random points</caption>
|
||||||
<tr><th> %Triangulation type <th colspan="2"> Machine 1 <th colspan="2"> Machine 2
|
<tr><th> %Triangulation type <th colspan="2"> Machine 1 <th colspan="2"> Machine 2
|
||||||
<tr><td> <td> Sequential insertion <td> %Iterator insertion <td> Sequential insertion <td> %Iterator insertion
|
<tr><td> <td> Sequential insertion <td> %Iterator insertion <td> Sequential insertion <td> %Iterator insertion
|
||||||
<tr><td> Hyperbolic (General traits) <td> 955 sec. <td> 23 sec. <td> 884 sec. <td> 20 sec.
|
<tr><td> Hyperbolic (%CORE traits) <td> 955 sec. <td> 23 sec. <td> 884 sec. <td> 20 sec.
|
||||||
<tr><td> Hyperbolic (CK traits) <td> 330 sec. <td> 1 sec. <td> 289 sec. <td> 1 sec.
|
<tr><td> Hyperbolic (CK traits) <td> 330 sec. <td> 1 sec. <td> 289 sec. <td> 1 sec.
|
||||||
<tr><td> Euclidean (%Cartesian traits) <td> 131 sec. <td> < 1 sec. <td> 114 sec. <td> < 1 sec.
|
<tr><td> Euclidean (EPICK) <td> 131 sec. <td> < 1 sec. <td> 114 sec. <td> < 1 sec.
|
||||||
</table>
|
</table>
|
||||||
</center>
|
</center>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
|
||||||
|
.image {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue