1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2026-03-18 02:59:42 +00:00

Euclidean spiral

This commit is contained in:
Zeno Rogue
2018-11-10 16:56:08 +01:00
parent 355409bebe
commit 90468c0daf
2 changed files with 74 additions and 7 deletions

View File

@@ -557,10 +557,10 @@ void applymodel(hyperpoint H, hyperpoint& ret) {
}
case mdSpiral: {
makeband(H, ret, band_conformal);
cld z(ret[0], ret[1]);
z = z * cld(conformal::cos_spiral, conformal::sin_spiral) * M_PI * conformal::cos_spiral;
cld z;
if(hyperbolic) makeband(H, ret, band_conformal);
else ret = H;
z = cld(ret[0], ret[1]) * conformal::spiral_multiplier;
z = exp(z);
ret[0] = real(z);
ret[1] = imag(z);
@@ -1372,6 +1372,13 @@ bool do_draw(cell *c) {
bool do_draw(cell *c, const transmatrix& T) {
if(!do_draw(c)) return false;
if(euclid && pmodel == mdSpiral) {
hyperpoint h = tC0(T);
cld z(h[0], h[1]);
z = z * conformal::spiral_multiplier;
ld iz = imag(z) + 1.14279e-2; // make it never fall exactly on PI
if(iz < -M_PI || iz >= M_PI) return false;
}
if(cells_drawn > vid.cells_drawn_limit) return false;
bool usr = vid.use_smart_range || quotient || torus;
if(usr && cells_drawn >= 50 && !in_smart_range(T)) return false;