From aed8df0d0459f814bca0bed4cd062d045504c383 Mon Sep 17 00:00:00 2001 From: Zeno Rogue Date: Wed, 27 Nov 2019 00:44:33 +0100 Subject: [PATCH] hrmap_standard now can be 3D maps --- cell.cpp | 6 +++++- geometry2.cpp | 4 +++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/cell.cpp b/cell.cpp index 5ecabfa5..962c0aea 100644 --- a/cell.cpp +++ b/cell.cpp @@ -70,7 +70,11 @@ struct hrmap { virtual double spacedist(cell *c, int i) { return hdist0(tC0(adj(c, i))); } }; -/** hrmaps which are based on regular non-Euclidean 2D tilings, possibly quotient */ +/** hrmaps which are based on regular non-Euclidean 2D tilings, possibly quotient + * Operators can be applied to these maps. + * Liskov substitution warning: maps which produce both tiling like above and 3D tilings + * (e.g. Euclidean and Crystal) also inherit from hrmap_standard + **/ struct hrmap_standard : hrmap { void draw() override; transmatrix relative_matrix(heptagon *h2, heptagon *h1, const hyperpoint& hint) override; diff --git a/geometry2.cpp b/geometry2.cpp index ccfb4017..33c89776 100644 --- a/geometry2.cpp +++ b/geometry2.cpp @@ -358,7 +358,9 @@ transmatrix hrmap_standard::adj(cell *c, int i) { else println(hlog, "gpadj not found"); } - if(NONSTDVAR) return calc_relative_matrix(c->cmove(i), c, C0); + if(NONSTDVAR || WDIM == 3) { + return calc_relative_matrix(c->cmove(i), c, C0); + } double d = cellgfxdist(c, i); transmatrix T = ddspin(c, i) * xpush(d); if(c->c.mirror(i)) T = T * Mirror;