mirror of https://github.com/CGAL/cgal
modified concepts according to Monique's comments
This commit is contained in:
parent
23096bd0d7
commit
f0897ef42a
|
|
@ -4,25 +4,33 @@
|
|||
/*!
|
||||
\ingroup PkgPeriodic4HyperbolicTriangulation2Concepts
|
||||
\cgalConcept
|
||||
|
||||
The concept `HyperbolicOctagonTranslation` describes the requirements for the class of
|
||||
hyperbolic translations specific to the Bolza surface.
|
||||
\cgalModifBegin
|
||||
The concept `HyperbolicOctagonTranslation` describes the requirements for an object that represents
|
||||
a hyperbolic translation in the fundamental group \f$\mathcal G\f$ of the the Bolza surface.
|
||||
|
||||
Generally, a hyperbolic translation \f$g\f$ is an orientation-preserving isometry acting
|
||||
on the hyperbolic plane, and is specified by two complex numbers \f$\alpha\f$ and \f$\beta\f$:
|
||||
\f[
|
||||
g(z) = \frac{\alpha \cdot z + \beta}{\overline{\beta} \cdot z + \overline{\alpha}},
|
||||
\qquad |\alpha|^2 - |\beta|^2 = 1.
|
||||
\qquad |\alpha|^2 - |\beta|^2 = 1,
|
||||
\f]
|
||||
A hyperbolic translation is also a word on the generators of the fundamental group
|
||||
of a hyperbolic surface.
|
||||
where \f$\overline{a}\f$ and \f$\overline{b}\f$ denote the complex conjugates of \f$a\f$
|
||||
and \f$b\f$ respectively. A hyperbolic translation is also a word on the generators of the
|
||||
fundamental group of a hyperbolic surface.
|
||||
|
||||
In our particular case, we consider an application specific to the Bolza surface. For our
|
||||
application, we only need to deal with a finite set of hyperbolic translations from the
|
||||
fundamental group of the Bolza surface. A notable property of these translations is that
|
||||
their word length is at most four; the composition of two translation always gives a
|
||||
translation that can be simplified so that its length is at most four. For more details,
|
||||
see \cgalCite{cgal:btv-dtosl-16} and \cgalCite{cgal:it-idtbs-17}.
|
||||
Specifically for the group \f$\mathcal G\f$, let \f$[g_0, g_1, \ldots, g_7]\f$ be the set of its
|
||||
generators, ordered counter-clockwise around the origin, with \f$g_k\f$ translating the origin
|
||||
\f$O\f$ along the real axis in the positive direction. The coefficients \f$\alpha_k\f$ and \f$\beta_k\f$
|
||||
of each generator of this ordered set are given as
|
||||
\f[
|
||||
\alpha_k = 1 + \sqrt{2}, \qquad \beta_k = \exp\left(\tfrac{ik\pi}{4}\right)\sqrt{2}\sqrt{1+\sqrt{2}}.
|
||||
\f]
|
||||
Note that with the notation given in Section \ref P4HT2_thespace of the User manual, the ordered
|
||||
set of generators can be written also as
|
||||
\f[
|
||||
[g_k, k = 0, \ldots, 7] = [ a, \overline{b}, c, \overline{d}, \overline{a}, b, \overline{c}, d ].
|
||||
\f]
|
||||
\cgalModifEnd
|
||||
|
||||
\cgalHasModel CGAL::Hyperbolic_octagon_translation
|
||||
*/
|
||||
|
|
@ -36,14 +44,22 @@ public:
|
|||
/// \name Types
|
||||
|
||||
/// Number type of the coefficients of \f$\alpha\f$ and \f$\beta\f$.
|
||||
/// This number type must be compatible with the field type `FT` of the concept
|
||||
/// `Periodic_4HyperbolicDelaunayTriangulationTraits_2`.
|
||||
typedef unspecified_type NT;
|
||||
|
||||
/// Represents a single letter of the word corresponding to the translation.
|
||||
typedef unspecified_type Word_letter;
|
||||
/// \cgalModifBegin Represents a single letter of the word corresponding to the translation. \cgalModifEnd
|
||||
typedef unsigned short int Word_letter;
|
||||
|
||||
/// Word representation of the translation, a sequence of elements of type `Word_letter`.
|
||||
typedef std::vector<Word_letter> Word;
|
||||
|
||||
/// \cgalModifBegin Represents a complex number with coefficients of type `NT`.\cgalModifEnd
|
||||
typedef std::pair<NT,NT> Complex;
|
||||
|
||||
/// \cgalModifBegin Represents the coefficients \f$\alpha\f$ and \f$\beta\f$ of a hyperbolic translation.\cgalModifEnd
|
||||
typedef std::pair<Complex,Complex> Coefficients;
|
||||
|
||||
/// \name Creation
|
||||
|
||||
/// Default constructor. Creates the identity translation.
|
||||
|
|
@ -94,15 +110,36 @@ public:
|
|||
|
||||
/// Returns the coefficient \f$\alpha\f$ of the translation's matrix. The first element of the returned `pair`
|
||||
/// contains the real part of \f$\alpha\f$. The second element contains its imaginary part.
|
||||
std::pair<NT,NT> alpha() const;
|
||||
Complex alpha() const;
|
||||
|
||||
/// Returns the coefficient \f$\beta\f$ of the translation's matrix. The first element of the returned `pair`
|
||||
/// contains the real part of \f$\beta\f$. The second element contains its imaginary part.
|
||||
std::pair<NT,NT> beta() const;
|
||||
Complex beta() const;
|
||||
|
||||
/// Returns `true` if the current translation represents the identity element of the group.
|
||||
bool is_identity();
|
||||
|
||||
|
||||
/// \name Static Access Functions
|
||||
|
||||
/*!
|
||||
\cgalModifBegin
|
||||
Returns a vector containing the coefficients of the generators of \f$\mathcal G\f$ and of their inverses.
|
||||
The translations must be given in the order:
|
||||
\f[ [g_0, g_1, \ldots, g_7]. \f]
|
||||
\cgalModifEnd
|
||||
*/
|
||||
static void get_generator_coefficients(std::vector< Coefficients >& gens);
|
||||
|
||||
|
||||
/*!
|
||||
\cgalModifBegin
|
||||
Returns a vector containing the generators of \f$\mathcal G\f$ and their inverses.
|
||||
The translations must be given in the order:
|
||||
\f[ [g_0, g_1, \ldots, g_7]. \f]
|
||||
\cgalModifEnd
|
||||
*/
|
||||
static void get_generators(std::vector<HyperbolicOctagonTranslation>& gens);
|
||||
|
||||
}; // end of class HyperbolicOctagonTranslation
|
||||
|
||||
|
|
|
|||
|
|
@ -14,6 +14,16 @@ to be fulfilled by any class used to instantiate the first template parameter of
|
|||
essential for the removal of existing vertices in a Delaunay triangulation of the
|
||||
Bolza surface.
|
||||
|
||||
\cgalModifBegin
|
||||
The concept requires that two nested types are provided:
|
||||
<ul>
|
||||
<li> A field number type `FT` that must support exact computations with algebraic
|
||||
numbers, in particular with nested square roots;
|
||||
<li> A `Hyperbolic_translation` type, which satisfies the requirements described
|
||||
in the concept `HyperbolicOctagonTranslation`.
|
||||
</ul>
|
||||
\cgalModifEnd
|
||||
|
||||
\cgalHasModel CGAL::Periodic_4_hyperbolic_Delaunay_triangulation_traits_2
|
||||
*/
|
||||
|
||||
|
|
|
|||
|
|
@ -15,6 +15,16 @@ types and the operations defined on them in `HyperbolicDelaunayTriangulationTrai
|
|||
it defines the hyperbolic translations that allow to encode the periodicity of the
|
||||
triangulation.
|
||||
|
||||
\cgalModifBegin
|
||||
The concept requires that two nested types are provided:
|
||||
<ul>
|
||||
<li> A field number type `FT` that must support exact computations with algebraic
|
||||
numbers, in particular with nested square roots;
|
||||
<li> A `Hyperbolic_translation` type, which satisfies the requirements described
|
||||
in the concept `HyperbolicOctagonTranslation`.
|
||||
</ul>
|
||||
\cgalModifEnd
|
||||
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue