diff --git a/fake.cpp b/fake.cpp index 66d4de2a..d33c9999 100644 --- a/fake.cpp +++ b/fake.cpp @@ -92,6 +92,10 @@ EX namespace fake { hyperpoint get_corner(cell *c, int cid, ld cf=3) override { + if(GOLDBERG && S3 == 4 && gp::param.first == 1 && gp::param.second == 1) { + return ddspin(c, cid) * spin(-M_PI / c->type) * lxpush0((c == c->master->c7 ? cgi.hexf : cgi.hexvdist) * 3 / cf); + } + if(embedded_plane) { geom3::light_flip(true); hyperpoint h = get_corner(c, cid, cf); @@ -113,6 +117,10 @@ EX namespace fake { } transmatrix adj(cell *c, int d) override { + if(GOLDBERG && S3 == 4 && gp::param.first == 1 && gp::param.second == 1) { + c->cmove(d); + return ddspin(c, d) * lxpush(cgi.crossf) * iddspin(c->move(d), c->c.spin(d), M_PI); + } if(embedded_plane) { geom3::light_flip(true); transmatrix T = adj(c, d); diff --git a/geometry.cpp b/geometry.cpp index f0a98270..70fe2404 100644 --- a/geometry.cpp +++ b/geometry.cpp @@ -694,17 +694,18 @@ void geometry_information::prepare_basics() { 2 * hdist0(mid(xspinpush0(M_PI/S6, hexvdist), xspinpush0(-M_PI/S6, hexvdist))) : hdist(xpush0(crossf), xspinpush0(TAU/S7, crossf)); - if(fake::in() && BITRUNCATED) { + if(fake::in() && (BITRUNCATED || (S3 == 4 && gp::param.first == 1 && gp::param.second == 1))) { vector> vals; - vals.emplace_back(S7, fake::around / 3); - vals.emplace_back(S3*2, fake::around * 2 / 3); + int s6 = BITRUNCATED ? S3*2 : S3; + vals.emplace_back(S7, BITRUNCATED ? fake::around / 3 : fake::around / 2); + vals.emplace_back(s6, BITRUNCATED ? fake::around * 2 / 3 : fake::around / 2); ld edgelength = euclid ? 1 : arcm::compute_edgelength(vals); // circumradius and inradius, for S7 and S6 shapes auto c7 = asin_auto(sin_auto(edgelength/2) / sin(M_PI / S7)); - auto c6 = asin_auto(sin_auto(edgelength/2) / sin(M_PI / S6)); - auto i7 = hdist0(mid(xpush0(c7), cspin(0, 1, 2*M_PI/S7) * xpush0(c7))); - auto i6 = hdist0(mid(xpush0(c6), cspin(0, 1, 2*M_PI/S6) * xpush0(c6))); + auto c6 = asin_auto(sin_auto(edgelength/2) / sin(M_PI / s6)); + auto i7 = hdist0(mid(xpush0(c7), cspin(0, 1, TAU/S7) * xpush0(c7))); + auto i6 = hdist0(mid(xpush0(c6), cspin(0, 1, TAU/s6) * xpush0(c6))); // note: tessf and hcrossf remain undefined crossf = i7 + i6; diff --git a/goldberg.cpp b/goldberg.cpp index b5ce2233..210ed38c 100644 --- a/goldberg.cpp +++ b/goldberg.cpp @@ -733,6 +733,7 @@ EX namespace gp { next = point3(x+y/2., -y * sqrt(3) / 2, 0); ld scale = 1 / hypot_d(2, next); if(!GOLDBERG) scale = 1; + if(fake::in() && x == 1 && y == 1) scale = 1; cgi.crossf *= scale; cgi.hexhexdist *= scale; cgi.hexvdist *= scale;