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
|
\ingroup PkgPeriodic4HyperbolicTriangulation2Concepts
|
||||||
\cgalConcept
|
\cgalConcept
|
||||||
|
\cgalModifBegin
|
||||||
The concept `HyperbolicOctagonTranslation` describes the requirements for the class of
|
The concept `HyperbolicOctagonTranslation` describes the requirements for an object that represents
|
||||||
hyperbolic translations specific to the Bolza surface.
|
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
|
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$:
|
on the hyperbolic plane, and is specified by two complex numbers \f$\alpha\f$ and \f$\beta\f$:
|
||||||
\f[
|
\f[
|
||||||
g(z) = \frac{\alpha \cdot z + \beta}{\overline{\beta} \cdot z + \overline{\alpha}},
|
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]
|
\f]
|
||||||
A hyperbolic translation is also a word on the generators of the fundamental group
|
where \f$\overline{a}\f$ and \f$\overline{b}\f$ denote the complex conjugates of \f$a\f$
|
||||||
of a hyperbolic surface.
|
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
|
Specifically for the group \f$\mathcal G\f$, let \f$[g_0, g_1, \ldots, g_7]\f$ be the set of its
|
||||||
application, we only need to deal with a finite set of hyperbolic translations from the
|
generators, ordered counter-clockwise around the origin, with \f$g_k\f$ translating the origin
|
||||||
fundamental group of the Bolza surface. A notable property of these translations is that
|
\f$O\f$ along the real axis in the positive direction. The coefficients \f$\alpha_k\f$ and \f$\beta_k\f$
|
||||||
their word length is at most four; the composition of two translation always gives a
|
of each generator of this ordered set are given as
|
||||||
translation that can be simplified so that its length is at most four. For more details,
|
\f[
|
||||||
see \cgalCite{cgal:btv-dtosl-16} and \cgalCite{cgal:it-idtbs-17}.
|
\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
|
\cgalHasModel CGAL::Hyperbolic_octagon_translation
|
||||||
*/
|
*/
|
||||||
|
|
@ -36,14 +44,22 @@ public:
|
||||||
/// \name Types
|
/// \name Types
|
||||||
|
|
||||||
/// Number type of the coefficients of \f$\alpha\f$ and \f$\beta\f$.
|
/// 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;
|
typedef unspecified_type NT;
|
||||||
|
|
||||||
/// Represents a single letter of the word corresponding to the translation.
|
/// \cgalModifBegin Represents a single letter of the word corresponding to the translation. \cgalModifEnd
|
||||||
typedef unspecified_type Word_letter;
|
typedef unsigned short int Word_letter;
|
||||||
|
|
||||||
/// Word representation of the translation, a sequence of elements of type `Word_letter`.
|
/// Word representation of the translation, a sequence of elements of type `Word_letter`.
|
||||||
typedef std::vector<Word_letter> Word;
|
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
|
/// \name Creation
|
||||||
|
|
||||||
/// Default constructor. Creates the identity translation.
|
/// 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`
|
/// 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.
|
/// 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`
|
/// 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.
|
/// 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.
|
/// Returns `true` if the current translation represents the identity element of the group.
|
||||||
bool is_identity();
|
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
|
}; // 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
|
essential for the removal of existing vertices in a Delaunay triangulation of the
|
||||||
Bolza surface.
|
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
|
\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
|
it defines the hyperbolic translations that allow to encode the periodicity of the
|
||||||
triangulation.
|
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