From 47ce9d2fd52e693c2f5e67a67d9a99ecea5dda40 Mon Sep 17 00:00:00 2001 From: Iordan Iordanov Date: Sun, 16 Sep 2018 19:08:25 +0200 Subject: [PATCH] added 'generators' function in translation matrix object; used this function in translations object --- .../CGAL/Hyperbolic_octagon_translation.h | 24 +------------- .../Hyperbolic_octagon_translation_matrix.h | 33 +++++++++++++++++-- 2 files changed, 31 insertions(+), 26 deletions(-) diff --git a/Periodic_4_hyperbolic_triangulation_2/include/CGAL/Hyperbolic_octagon_translation.h b/Periodic_4_hyperbolic_triangulation_2/include/CGAL/Hyperbolic_octagon_translation.h index 85deae40cba..2b376731b90 100644 --- a/Periodic_4_hyperbolic_triangulation_2/include/CGAL/Hyperbolic_octagon_translation.h +++ b/Periodic_4_hyperbolic_triangulation_2/include/CGAL/Hyperbolic_octagon_translation.h @@ -59,30 +59,8 @@ private: static std::map init_gmap() { - // Create matrix coefficients - FT sq2 = CGAL::sqrt(FT(2)); - FT xi = FT(1) + sq2; - FT rxi = CGAL::sqrt(xi); - - // All matrices have the same _alpha - ECplx alpha(xi,FT(0)); - - // This vector holds the different _betas - std::vector< ECplx > beta; - - beta.push_back( ECplx( sq2 * rxi, 0 ) ); - beta.push_back( ECplx( rxi, rxi ) ); - beta.push_back( ECplx( 0, sq2 * rxi ) ); - beta.push_back( ECplx( -rxi, rxi ) ); - beta.push_back( ECplx( -sq2 * rxi, 0 ) ); - beta.push_back( ECplx( -rxi, -rxi ) ); - beta.push_back( ECplx( 0, -sq2 * rxi ) ); - beta.push_back( ECplx( rxi, -rxi ) ); - std::vector g; - for (int i = 0; i < 8; i++) { - g.push_back(Matrix(alpha, beta[i])); - } + Matrix::generators(g); std::map m; m["_"] = Matrix(); diff --git a/Periodic_4_hyperbolic_triangulation_2/include/CGAL/internal/Hyperbolic_octagon_translation_matrix.h b/Periodic_4_hyperbolic_triangulation_2/include/CGAL/internal/Hyperbolic_octagon_translation_matrix.h index 28acb4e7aaf..847c1360cc8 100644 --- a/Periodic_4_hyperbolic_triangulation_2/include/CGAL/internal/Hyperbolic_octagon_translation_matrix.h +++ b/Periodic_4_hyperbolic_triangulation_2/include/CGAL/internal/Hyperbolic_octagon_translation_matrix.h @@ -30,8 +30,8 @@ template class Hyperbolic_octagon_translation_matrix { public: - typedef ECplx Matrix_element; - typedef typename ECplx::NT NT; + typedef ECplx Matrix_element; + typedef typename ECplx::NT NT; private: typedef Hyperbolic_octagon_translation_matrix Self; @@ -39,9 +39,36 @@ private: protected: Matrix_element _alpha; - Matrix_element _beta; + Matrix_element _beta; public: + + static void generators(std::vector& gens) { + // Create matrix coefficients + NT sq2 = CGAL::sqrt(NT(2)); + NT xi = NT(1) + sq2; + NT rxi = CGAL::sqrt(xi); + + // All matrices have the same _alpha + ECplx alpha(xi,NT(0)); + + // This vector holds the different _betas + std::vector< ECplx > beta; + + beta.push_back( ECplx( sq2 * rxi, 0 ) ); + beta.push_back( ECplx( rxi, rxi ) ); + beta.push_back( ECplx( 0, sq2 * rxi ) ); + beta.push_back( ECplx( -rxi, rxi ) ); + beta.push_back( ECplx( -sq2 * rxi, 0 ) ); + beta.push_back( ECplx( -rxi, -rxi ) ); + beta.push_back( ECplx( 0, -sq2 * rxi ) ); + beta.push_back( ECplx( rxi, -rxi ) ); + + for (int i = 0; i < 8; i++) { + gens.push_back(Self(alpha, beta[i])); + } + } + Hyperbolic_octagon_translation_matrix(const Matrix_element& _a, const Matrix_element& _b ) : _alpha( _a ), _beta( _b ) {}