added 'generators' function in translation matrix object; used this function in translations object

This commit is contained in:
Iordan Iordanov 2018-09-16 19:08:25 +02:00
parent 25930c907c
commit 47ce9d2fd5
2 changed files with 31 additions and 26 deletions

View File

@ -59,30 +59,8 @@ private:
static std::map<std::string, Matrix> 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<Matrix> g;
for (int i = 0; i < 8; i++) {
g.push_back(Matrix(alpha, beta[i]));
}
Matrix::generators(g);
std::map<std::string, Matrix> m;
m["_"] = Matrix();

View File

@ -30,8 +30,8 @@ template <class ECplx>
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<ECplx> Self;
@ -39,9 +39,36 @@ private:
protected:
Matrix_element _alpha;
Matrix_element _beta;
Matrix_element _beta;
public:
static void generators(std::vector<Self>& 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 ) {}