From 8b758bded93b31e3b4d9ee38e08c0b4d0b32e269 Mon Sep 17 00:00:00 2001 From: Zeno Rogue Date: Thu, 6 Oct 2022 14:47:48 +0200 Subject: [PATCH] arb:: tilings with mirrors can now be loaded with -arb-unmirror --- arbitrile.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/arbitrile.cpp b/arbitrile.cpp index 030c7fab..6c58b9fd 100644 --- a/arbitrile.cpp +++ b/arbitrile.cpp @@ -1453,13 +1453,22 @@ struct hrmap_arbi : hrmap { for(auto& p2: altmap[alt]) if(id_of(p2.first) == co.sid && same_point_may_warn(tC0(p2.second), tC0(T))) { for(int oth=0; oth < p2.first->type; oth++) { - if(same_point_may_warn(p2.second * xsh.vertices[oth], T * xsh.vertices[co.eid])) { + int oth1 = gmod(oth+1, p2.first->type); + int eid1 = gmod(co.eid+1, p2.first->type); + if(same_point_may_warn(p2.second * xsh.vertices[oth], T * xsh.vertices[co.eid]) && same_point_may_warn(p2.second * xsh.vertices[oth1], T * xsh.vertices[eid1])) { if(p2.first->move(oth)) { throw hr_exception("already connected!"); } h->c.connect(d, p2.first, oth%p2.first->type, co.mirror); return p2.first; } + if(same_point_may_warn(p2.second * xsh.vertices[oth], T * xsh.vertices[eid1]) && same_point_may_warn(p2.second * xsh.vertices[oth1], T * xsh.vertices[co.eid])) { + if(p2.first->move(oth)) { + throw hr_exception("already connected!"); + } + h->c.connect(d, p2.first, oth%p2.first->type, co.mirror^1); + return p2.first; + } } }