mirror of https://github.com/CGAL/cgal
added 'generators' function in translation matrix object; used this function in translations object
This commit is contained in:
parent
25930c907c
commit
47ce9d2fd5
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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 ) {}
|
||||
|
|
|
|||
Loading…
Reference in New Issue