From 53289b3ba6a4b59ebefe25a01704fc376031c208 Mon Sep 17 00:00:00 2001 From: Zeno Rogue Date: Wed, 27 Apr 2022 23:56:48 +0200 Subject: [PATCH] tes:: fix to apeirogons --- arbitrile.cpp | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/arbitrile.cpp b/arbitrile.cpp index 813ee95d..e6c18504 100644 --- a/arbitrile.cpp +++ b/arbitrile.cpp @@ -49,7 +49,7 @@ struct shape { int flags; /** list of vertices in the usual convention */ vector vertices; - /** list of vertices in the tesfile convention */ + /** list of angles in the tesfile convention */ vector angles; /** list of edge lengths */ vector edges; @@ -307,16 +307,16 @@ void shape::build_from_angles_edges(bool is_comb) { hyperpoint v = gpushxto0(ctr) * inf_point; v /= v[2]; vertices.push_back(v); + angles.push_back(0); angles.push_back(angles[0]/2); angles[0] /= 2; - angles.push_back(0); edges.push_back(0); edges.push_back(0); } n = isize(angles); for(int i=0; i void cycle(vector& t) { + std::rotate(t.begin(), t.begin() + 2, t.end()); + } + /** \brief for tessellations which contain mirror rules, remove them by taking the orientable double cover */ EX void unmirror(arbi_tiling& c) { auto& mirror_rules = c.mirror_rules; @@ -435,9 +439,21 @@ EX void unmirror(arbi_tiling& c) { for(auto& v: sh[i].vertices) v[1] = -v[1]; reverse(sh[i].edges.begin(), sh[i].edges.end()); + for(auto& e: sh[i].edges) { + if(e == INFINITE_LEFT) e = INFINITE_RIGHT; + else if(e == INFINITE_RIGHT) e = INFINITE_LEFT; + } reverse(sh[i].vertices.begin()+1, sh[i].vertices.end()); reverse(sh[i].angles.begin(), sh[i].angles.end()-1); reverse(sh[i].connections.begin(), sh[i].connections.end()); + if(sh[i].apeirogonal) { + cycle(sh[i].edges); + cycle(sh[i].vertices); + println(hlog, "angles before = ", sh[i].angles); + cycle(sh[i].angles); + println(hlog, "angles now = ", sh[i].angles); + cycle(sh[i].connections); + } } if(true) for(int i=0; i