1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2024-11-23 13:07:16 +00:00

fake on bitruncated tiling now works correctly

This commit is contained in:
Zeno Rogue 2024-06-18 17:25:00 +02:00
parent cf4912a895
commit aae1be2191
2 changed files with 23 additions and 0 deletions

View File

@ -571,6 +571,8 @@ EX ld around_orig() {
return arcm::current.N; return arcm::current.N;
#endif #endif
if(hat::in()) return 6; if(hat::in()) return 6;
if(WDIM == 2 && BITRUNCATED)
return 3;
if(WDIM == 2) if(WDIM == 2)
return S3; return S3;
if(underlying == gRhombic3) if(underlying == gRhombic3)

View File

@ -694,6 +694,27 @@ void geometry_information::prepare_basics() {
2 * hdist0(mid(xspinpush0(M_PI/S6, hexvdist), xspinpush0(-M_PI/S6, hexvdist))) 2 * hdist0(mid(xspinpush0(M_PI/S6, hexvdist), xspinpush0(-M_PI/S6, hexvdist)))
: hdist(xpush0(crossf), xspinpush0(TAU/S7, crossf)); : hdist(xpush0(crossf), xspinpush0(TAU/S7, crossf));
if(fake::in() && BITRUNCATED) {
vector<pair<ld, ld>> vals;
vals.emplace_back(S7, fake::around / 3);
vals.emplace_back(S3*2, fake::around * 2 / 3);
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)));
tessf = tessf; // undefined
crossf = i7 + i6;
hexf = c7;
hcrossf = hcrossf; // undefined: distance from heptagon center to big heptagon vertex
hexhexdist = i6 + i6;
hexvdist = c6;
rhexf = c6;
}
DEBB(DF_GEOM | DF_POLY, DEBB(DF_GEOM | DF_POLY,
(hr::format("S7=%d S6=%d hexf = " LDF" hcross = " LDF" tessf = " LDF" hexshift = " LDF " hexhex = " LDF " hexv = " LDF "\n", S7, S6, hexf, hcrossf, tessf, hexshift, (hr::format("S7=%d S6=%d hexf = " LDF" hcross = " LDF" tessf = " LDF" hexshift = " LDF " hexhex = " LDF " hexv = " LDF "\n", S7, S6, hexf, hcrossf, tessf, hexshift,
hexhexdist, hexvdist))); hexhexdist, hexvdist)));