dmishin / hyperbolic-ca-simulator

Simulator of cellular automata on hyperbolic (Lobachevsky) plane, in browser.
MIT License
38 stars 4 forks source link

Idea: Support for hyperbolic soccer ball and similar tillings #1

Open ChristopherKing42 opened 6 years ago

ChristopherKing42 commented 6 years ago

https://en.wikipedia.org/wiki/Truncated_order-7_triangular_tiling#Hyperbolic_soccerball

dmishin commented 6 years ago

In truncated tilings, different cells have different number of neighbors, which makes them less interesting for CAs: you would probably need a separate rule for each cell type, so more intrinsic complexity. Are there any signs that truncated tilings could be interesting? I am not sure that the result worth the effort.

The hard part is addressing cells of truncated tiling.

Currently, cell address is a word in the triangle group of a tiling. For tiling {n,m} it is a group, generated by {aa = bb = cc = (ab)^n = (bc)^m = (ac)^2 = 1}

Such word identifies one of 2n triangles forming an n-gonal cell. The shortest of all triangle addresses serves as a cell address.

Address of a truncated tiling cell can be formed by extending original cell address with an additional flag, telling what kind of cells (red or yellow) is being addressed.

ChristopherKing42 commented 6 years ago

Ah, I guess you're right. I was just thinking it would be more (but not fully) Euclidean.

On a side note, how do know which triangles are part of the same n-gon? (Oh wait, I see. ab takes you to a neighboring triangle in the n-gon. Since (ab)^n=1, you can just cycle through.)

ChristopherKing42 commented 6 years ago

Also, don't some members of the triangle group reverse orientation?

ChristopherKing42 commented 6 years ago

Oh, and back on topic, addressing cells in the hyperbolic soccer ball isn't too tricky once you've done cell addressing in {7,3}. Just treat the heptagons in the soccer ball as the center of the heptagons in {7,3}, and treat the hexagons in the soccer ball as the vertices in of the heptagons in {7,3}.

Any Truncation works similarly.

dmishin commented 6 years ago

You are absolutely right about (ab)^n, that's exactly how I do it in the code. You are right about the orientation too, I am only considering words of even length (i.e. orientation preserving).

Yes, cell addressing is really not that much tricky. Existing code would work for a heptagon cells, and to get address of a hexagon, it should cycle over powers of (bc) instead of (ab). And address must be imbued with a boolean flag, telling whether it is address of a hexagon or a heptagon.

Maybe I'll try to implement it some day.

ChristopherKing42 commented 6 years ago

If your worried about the faces being different, you could restrict it to isohedral tessellations. (For example, the dual of hyperbolic soccer ball is isohedral). Another interesting example is the dual to the Alternated octagonal tiling, which is an isohedral hexagon tiling.