CGAL 6.0 - 2D Periodic Hyperbolic Triangulations
|
#include <CGAL/Hyperbolic_octagon_translation.h>
The class Hyperbolic_octagon_translation
defines an object to represent a hyperbolic translation of the fundamental group of the Bolza surface \(\mathcal M\).
It accepts one template parameter:
FT | Field number type. Must provide exact computations with algebraic numbers, notably with nested square roots. The default value for this parameter is CORE::Expr . |
A translation \(g\) in \(\mathcal G\) is a mapping acting on the hyperbolic plane \(\mathbb H^2\). It has the form
\[ g(z) = \frac{ \alpha\cdot z + \beta }{ \overline{\beta}\cdot z + \overline{\alpha} }, \qquad \alpha,\beta \in \mathbb C, \qquad z \in \mathbb H^2, \qquad |\alpha|^2 - |\beta|^2 = 1, \]
where \(\overline{\alpha}\) and \(\overline{\beta}\) are the complex conjugates of \(\alpha\) and \(\beta\) respectively. In this implementation, the translation \(g\) is uniquely defined by its coefficients \(\alpha\) and \(\beta\).
Considering the set of generators \(\mathcal A = [a, \overline{b}, c, \overline{d}, \overline{a}, b, \overline{c}, d]\) as an alphabet, a translation \(g\) in \(\mathcal G\) can be seen as a word on the alphabet \(\mathcal A\). Each letter of this alphabet is represented as an unsigned integer from from 0 to 7, and each word (i.e., translation) is a sequence of letters.
Types | |
enum | Generator : Word_letter { A = 0 , B_BAR = 1 , C = 2 , D_BAR = 3 , A_BAR = 4 , B = 5 , C_BAR = 6 , D = 7 } |
Enumeration type for the alphabet \(\mathcal A\). More... | |
typedef unspecified_type | FT |
Field number type of the coefficients of \(\alpha\) and \(\beta\). | |
typedef unsigned short int | Word_letter |
Represents a single letter of the alphabet \(\mathcal A\). | |
typedef std::vector< Word_letter > | Word |
Represents a word on the alphabet \(\mathcal A\). | |
Creation | |
Hyperbolic_octagon_translation () | |
Default constructor. Creates the identity translation of the group \(\mathcal G\). | |
Hyperbolic_octagon_translation (Word w) | |
Creates the translation described by the word w . | |
Hyperbolic_octagon_translation (Word_letter l) | |
Creates the translation described by the one-letter word l . | |
Hyperbolic_octagon_translation (Word_letter l, Word_letter m) | |
Creates the translation described by the two-letter word lm . | |
Hyperbolic_octagon_translation (Word_letter l, Word_letter m, Word_letter n) | |
Creates the translation described by the three-letter word lmn . | |
Hyperbolic_octagon_translation (Word_letter l, Word_letter m, Word_letter n, Word_letter o) | |
Creates the translation described by the four-letter word lmno . | |
Operations | |
Hyperbolic_octagon_translation | operator* (const Hyperbolic_octagon_translation &other) const |
Multiplication operator; composes the current translation with other . | |
Hyperbolic_octagon_translation | operator- (const Hyperbolic_octagon_translation &other) const |
Difference operator; the difference of two translations \(v\) and \(w\) is defined as \(v * w^{-1}\). | |
Hyperbolic_octagon_translation & | operator= (const Hyperbolic_octagon_translation &other) |
Assignment operator; modifying the translation after the assignment leaves other unaffected. | |
bool | operator== (const Hyperbolic_octagon_translation< FT > &other) const |
Equality operator. | |
bool | operator!= (const Hyperbolic_octagon_translation< FT > &other) const |
Inequality operator. | |
bool | operator< (const Hyperbolic_octagon_translation< FT > &other) const |
Comparison operator. | |
Hyperbolic_octagon_translation | inverse () const |
Returns the inverse of the current translation. | |
Access Functions | |
std::pair< FT, FT > | alpha () const |
Returns the coefficient \(\alpha\) of the translation. | |
std::pair< FT, FT > | beta () const |
Returns the coefficient \(\beta\) of the translation. | |
bool | is_identity () |
Returns true if the current translation represents the identity element of the group \(\mathcal G\). | |
Utility Functions | |
std::string | to_string () const |
Returns a string representation of the translation, containing its Word_letter s. | |
Static Access Functions | |
static Self | generator (const Word_letter wl) |
Return the generator wl of the group \(\mathcal G\). | |
static void | generators (std::vector< Hyperbolic_octagon_translation< FT > > &gens) |
Returns the set of generators of \(\mathcal G\) and their inverses in a std::vector . | |
typedef unspecified_type CGAL::Hyperbolic_octagon_translation< FT >::FT |
typedef std::vector<Word_letter> CGAL::Hyperbolic_octagon_translation< FT >::Word |
Represents a word on the alphabet \(\mathcal A\).
By extension, represents a hyperbolic translation in the group \(\mathcal A\).
typedef unsigned short int CGAL::Hyperbolic_octagon_translation< FT >::Word_letter |
Represents a single letter of the alphabet \(\mathcal A\).
By extension, represents a generator of the group \(\mathcal G\).
enum CGAL::Hyperbolic_octagon_translation::Generator : Word_letter |
Enumeration type for the alphabet \(\mathcal A\).
This enumeration can be used to recover the generators of the group \(\mathcal G\).
generator()
std::pair< FT, FT > CGAL::Hyperbolic_octagon_translation< FT >::alpha | ( | ) | const |
Returns the coefficient \(\alpha\) of the translation.
The first element of the returned pair
contains the real part of \(\alpha\). The second element contains its imaginary part.
std::pair< FT, FT > CGAL::Hyperbolic_octagon_translation< FT >::beta | ( | ) | const |
Returns the coefficient \(\beta\) of the translation.
The first element of the returned pair
contains the real part of \(\beta\). The second element contains its imaginary part.
|
static |
Return the generator wl
of the group \(\mathcal G\).
Note that wl
can be an element of the enumeration set Generator. The calls generator(0)
and generator(A)
will both return the translation \(a\).
|
static |
Returns the set of generators of \(\mathcal G\) and their inverses in a std::vector
.
The generators are given in the order: \( [a, \overline{b}, c, \overline{d}, \overline{a}, b, \overline{c}, d].\)
bool CGAL::Hyperbolic_octagon_translation< FT >::operator< | ( | const Hyperbolic_octagon_translation< FT > & | other | ) | const |
Comparison operator.
Each translation \(g\) of \(\mathcal G\), when applied to the octagon \(\mathcal D_O\), produces a copy of \(\mathcal D_O\) labeled by the translation \(g\). The copies of \(\mathcal D_O\) incident to \(\mathcal D_O\) are naturally ordered counter-clockwise around \(\mathcal D_O\). The comparison operator compares two translations based on the ordering of the copies of \(\mathcal D_O\) that they produce. For more details, see Section Representation of the User manual.
std::string CGAL::Hyperbolic_octagon_translation< FT >::to_string | ( | ) | const |
Returns a string representation of the translation, containing its Word_letter
s.
This function is given as utility for printing/debugging purposes. For example, for the translation \(abcd\), this function returns 0527
, and for the identity it returns _
.