diff --git a/binary-tiling.cpp b/binary-tiling.cpp index 5c403805..9973519c 100644 --- a/binary-tiling.cpp +++ b/binary-tiling.cpp @@ -530,10 +530,10 @@ EX namespace bt { throw "unknown direction"; } else if(use_direct_for(dir)) - return direct_tmatrix[dir]; + return cgi.direct_tmatrix[dir]; else { h->cmove(dir); - return inverse_tmatrix[h->c.spin(dir)]; + return cgi.inverse_tmatrix[h->c.spin(dir)]; } } @@ -584,18 +584,12 @@ EX namespace bt { EX hrmap *new_alt_map(heptagon *o) { return new hrmap_binary(o); } - EX transmatrix direct_tmatrix[14]; - EX transmatrix inverse_tmatrix[14]; - - /** a bitmask for hr::bt::use_direct_for */ - int use_direct; - /** \brief return if ew should use direct_tmatrix[dir] to get the adjacent cell the given direction * * Otherwise, this is the 'up' direction and thus we should use inverse_tmatrix for the inverse direction */ EX bool use_direct_for(int dir) { - return (use_direct >> dir) & 1; + return (cgi.use_direct >> dir) & 1; } /** \brief which coordinate is expanding */ @@ -726,7 +720,10 @@ EX namespace bt { EX void build_tmatrix() { if(among(geometry, gBinaryTiling, gSol, gArnoldCat)) return; // unused - use_direct = (1 << (S7-1)) - 1; + auto& direct_tmatrix = cgi.direct_tmatrix; + auto& inverse_tmatrix = cgi.inverse_tmatrix; + auto& use_direct = cgi.use_direct; + use_direct = (1 << (S7-1)) - 1; if(geometry == gBinary4) { use_direct = 3; direct_tmatrix[0] = xpush(-log(2)) * parabolic(-0.5); diff --git a/geometry.cpp b/geometry.cpp index b80a1337..6795b4eb 100644 --- a/geometry.cpp +++ b/geometry.cpp @@ -159,6 +159,13 @@ struct geometry_information { int single_step; /** the number of levels in SL2 */ int steps; + + /** for binary tilings */ + transmatrix direct_tmatrix[14]; + transmatrix inverse_tmatrix[14]; + + /** a bitmask for hr::bt::use_direct_for */ + int use_direct; /** various parameters related to the 3D view */ ld INFDEEP, BOTTOM, HELLSPIKE, LAKE, WALL, FLOOR, STUFF,