Hyperbolic Cellular Automata Simulator
Hyperbolic spaces are a bit freaky because of how huge they are. Living on a flat plane (like we do for scales smaller than a few thousand kilometers), area grows quadratically with the radius, i.e. if you venture out twice as far, the area you cover gets four times bigger. Go 10 times further, and there is 100 times more area to get lost in.
On a hyperbolic plane however, area grows exponentially when you stray further than a few times the characteristic length of the space. Increasing your range from one such length to two, the area covered grows by a factor of about 5. Going from ten to twenty however, increases the area by about ~20000!
If the characteristic length were a kilometer, you would never be able to get more than a few dozen kilometers away from your home before being irretrievably lost. The area around you 10 kilometers away would have the area of Manhattan. A circle with radius 20 kilometers would be slightly bigger than Egypt. And everything within 50 kilometers would be spread out over an area about the size of the Solar System. Unless you left a trail of breadcrumbs, you'd never be able to retrace your steps.
There is a game HyperRogue https://www.roguetemple.com/z/hyper/ (one of my favorite, vide https://medium.com/quantum-photons/to-make-a-cool-game-you-f...).
One of its zones, living cave, as a cellular automaton in hyperbolic space. Its walls live.
Excellent!
I fear it's quite rare anymore that I see something very new to me. Sure, I read about a hyperbolic world in Greg Egan's Dichronauts, but it's not quite the same as seeing it.
Only problem seems to be that it only keeps track of cells that are currently visible; pan around until the living cells are no longer visible, then pan back - and you come back to a desert.
Here's a fun world, N=8, M=4 and 'next': function(x, s){ if (x===1 && (s===2 || s===3)) return 1; if (x===0 && (s===3)) return 1; return 0
https://dmishin.github.io/hyperbolic-ca-simulator/index.html...
When you drag the hyperbolic plane it moves and redraws. How is this translation of the cells calculation done?
This is very cool.