Install Steam
login
|
language
简体中文 (Simplified Chinese)
繁體中文 (Traditional Chinese)
日本語 (Japanese)
한국어 (Korean)
ไทย (Thai)
Български (Bulgarian)
Čeština (Czech)
Dansk (Danish)
Deutsch (German)
Español - España (Spanish - Spain)
Español - Latinoamérica (Spanish - Latin America)
Ελληνικά (Greek)
Français (French)
Italiano (Italian)
Bahasa Indonesia (Indonesian)
Magyar (Hungarian)
Nederlands (Dutch)
Norsk (Norwegian)
Polski (Polish)
Português (Portuguese - Portugal)
Português - Brasil (Portuguese - Brazil)
Română (Romanian)
Русский (Russian)
Suomi (Finnish)
Svenska (Swedish)
Türkçe (Turkish)
Tiếng Việt (Vietnamese)
Українська (Ukrainian)
Report a translation problem
To show whether or not other surface vertex types occur, all we have to do is to generate child cells for each known surface vertex, and then see if any new surface vertex types pop up.
I generated the child cells for each surface vertex type that share this vertex; it turns out that in all cases, exactly all known surface vertices appear in the next layer, with the exception that starting with a 5-cell surface vertex doesn't result in 'EEVVV', since E cells are never added in pairs here.
Unless I made a mistake somewhere, this should proof the correctness of the transition rules. :)
https://steamcommunity.com/sharedfiles/filedetails/?id=1508930619
The idea is to start with a central cell in the plane, and generate concentric circles around it (assuming vertex-adjacency). Again, cell types A (green, yellow) share an edge with an inner neighbor, while cell types B (blue, orange) only share a vertex with an inner neighbor.
Black arrows only depend on the cell type, while purple arrows have to be determined from the parent cell.
(note: I only drew black arrows for radius 1 and 2, and purple arrows only for the top right quarter of the picture)
For B cells, one black arrow points towards the right circle neighbor, while the other black arrow points towards the right top edge.
For the root cell, Two purple arrows point in arbitrary directions (different axes).
For A cells, the black arrow points towards the right circle neighbor. The purple arrow direction has to be determined from the parent cell: If an arrow from the parent cell points towards this cell, then the purple arrow will point up, otherwise it will point down.
Note: Those numbers are only for the specific layers. While there are 3458 cells in layer 2, the complete tree with 2 layers contains 1 + 110 + 3458 cells.
Here again, the transition rule:
F → {F, 2E, 4V}
E → {2F, 5E, 12V}
V → {3F, 9E, 25V}
I noticed that the ratio between cells in layer n+1, and cells in layer n seems to converge towards 15 + 4sqrt(14) ~ 29.97. This applies to general cells, as well as to cells of a specific type (F, E, V).
Also, the ratio #F : #E : #V seems to converge towards 1 : (1 + sqrt(14)/2) : (4 + sqrt(14)).
I tested the values, and it looks like they are correct:
If I start with an (irrational) number of F, E and V cells with this exact ratio, and use the transition rule to generate the next layer, the ratio remains the same, and the total number of cells for the next layer increases by said factor of 15 + 4sqrt(14).
However, there's a way to simplify the surface structure, s.th. each cell type is represented by a single surface polygon:
- F cells remain unmodified, and still appear as a square on the surface.
- For E cells, take the 2 edges that connect them to other F or E cells, then make a cut through the plane that contains both edges. This cuts the cube into 2 triangular prisms with a rectangle* base. As we remove the top half, the bottom part of the cell appears as a rectangle on the surface.
- For V cells, take the 3 vertices that are next to the bottom vertex, and make a cut through the plane that contains them. After removing the top part, the remaining bottom part of the cell is a triangular pyramid that appears as a regular triangle on the surface.
* I define a non-Euclidean rectangle as a quadrilateral with 4 equal angles, and where opposite sides have the same length. If anyone knows a more appropriate term, please let me know. ;)A side-effect of this simplified surface is that it's smoother, and the slopes are less extreme, making it easier to walk on the surface if gravity pulls towards the center.
Using this simplified representation, here's a diagram that shows the child cells derived from a parent cell of each type (F, E, V). I used red for F cells (square), green for E cells (rectangle), and blue for V cells (triangle).
Note that the polygons are distorted, and "rectangles" often have the shorter and longer side swapped. Also, only the child cells are shown, while the parent cells are only indicated with F, E, V.
https://steamcommunity.com/sharedfiles/filedetails/?id=1520260325
The blue arrows on the parent F cell here point up and left, and the blue arrow on the parent E cell here points up.
Note that V cell groups (blue triangles) are always arranged like icosahedron faces:
It could be interesting to analyze horosphere surface patterns in this honeycomb. Horospheres can be generated by starting with a single F, E or V cell, and extending a tree from it:
- From F cells, we get a central infinite line consisting of F cells that is orthogonal to the horospheres. Child cells only extend in a limited number of directions, but we can use the 4-fold symmetry around this line to extend the horospheres in all directions.
- From E cells, we get a central infinite line of alternating single and double E cells. So each other layer will generate a different horosphere pattern around the line center.
- From V cells, we get a central infinite line of V cells.
Note that actual hyperbolic distance per cell is small along the line of F cells, large along the line of V cells, and somewhere in-between along the line of E cells.This will likely have an effect on the actual average curvature of the "horospheres", depending which base line is used to generate them. For example, "horospheres" generated using V lines have an above-average "distance" from the center, and should be more positively curved, while "horospheres" generated using F lines have a below-average "distance" from the center, and should be more negatively curved.
https://steamcommunity.com/sharedfiles/filedetails/?id=1533399490
As a start, the grey cells can be interpreted as single cubes, and the lines could be implemented as planes that are attached to each face of those single cubes (so there would be 6 planes around each cube, not just 4).
However, if we start at the center of a single cube, and go in the direction of a cube vertex, the 3 planes diverge. Is there a way to complete the pattern in this direction, with the resulting tile size still being relatively small?
Such a pattern could be a nice basis for tunnel systems in a hyperbolic six-degrees-of-freedom game.
Also, I'd like to see patterns that use identical or different 3D tetrominos as tiles.
(Hint: In this honeycomb, the equivalent to the Euclidean 2x2 tetromino would have a gap. And there are two 3D tetrominos that don't have a 2D equivalent, or three if mirror versions count extra.)
But if you want to extend this to 3D, the lines become full {4,5} planes -- and you can't tile those with two different types of cubes that alternate.
In the 2D picture, the line cells between 2 grey squares would correspond to F cells, and the other line cells would correspond to E cells.
If the lines are extended to planes, each F cell shares a face with 2 opposite grey cubes outside of the plane, and with 4 E cells within the same plane. The remaining 8 edge neighbors of an F cell within the same plane would be V cells.
E cells would share a face with 2 opposite E cells outside of the plane, and with 2 opposite F cells and 2 opposite V cells within the same plane. It follows that 4 of their other edge neighbors in the plane are E cells, and 4 are V cells.
The plane pattern could be continued in a simple way, but an arbitrary pattern may not work depending on how the pattern continues beyond the point where 3 nearby planes diverge.
But yeah, I currently don't know any useful tools that allow to mark cells in hyperbolic honeycombs etc., either.
I noticed that tree structures based on vertex adjacency are relatively simple to implement for honeycombs {p,3,4}, with p ≥ 3. They have 4 cells around each edge, and 8 cells around each vertex. That includes:
The cell types for a honeycomb {p,3,4} are defined similar to the ones in the {5,3,4} tree:
- A root cell R where all faces are top faces
- F cells have 1 bottom face, p side faces, and all other faces are top faces.
- E cells have 1 bottom edge, 2 side faces that have this edge in common, and 1 more side face at each bottom edge vertex (for a total of 4 side faces). All other faces are top faces.
- V cells have 1 bottom vertex, with 3 side faces around it. Again, all other faces are top faces.
Each cell has the following child cells:- 1 F cell for each top face.
- 1 E cell for each edge between 2 top faces.
- 1 V cell for each vertex between 3 top faces.
...and that's it, mostly, because fortunately, no additional gaps have to be filled based on cell orientation. To illustrate:Two face-adjacent cells in the same layer either have 2 or 3 surface vertices in common.
(A) If they have 2 surface vertices in common, there are 4 same-layer cells around both surface vertices, and each of those 4 cells per vertex generates an F child cell next to this vertex, resulting in 8 cells around both vertices.
(B) If they have 3 surface vertices in common, one of the vertices is only shared by both cells within this layer. Each cell has 2 top faces and 1 surface edge around this common surface vertex, and generates 2 F and 1 E cell around this vertex, for a total of 2 parent cells and 6 child cells around this vertex.
About the individual honeycombs:
{3,3,4} is a bit special here, since E cells have 2 bottom edges, each of which is shared with one of the two R cells (poles), and all 4 faces are side faces. And V cells are reinterpreted as F cells for the other pole, so the face that would normally be a top face is a bottom face instead, with the 3 remaining faces being side faces. As a result, only the poles have top faces, and the only transition rule we have is R → {4 F, 6 E, 4V} = {8 F, 6 E}, with 2 different types of F cells around each pole R.
(which is a bit messy, since each R cell shares its 14 child cells with the other R cell)
{4,3,4} and {5,3,4} are straightforward. For {4,3,4}, the transition rules are as following:
R → {6 F, 12 E, 8 V}
F → {1 F}
E → {2 F, 1 E}
V → {3 F, 3 E, 1 V}
...and for {5,3,4}:
R → {12 F, 30 E, 20 V}
F → {6 F, 10 E, 5 V}
E → {8 F, 15 E, 9 V}
V → {9 F, 18 E, 10 V}
For {p,3,4} with p ≥ 6, it doesn't make sense to list transition rules with the (infinite) number of child cells. But we can still describe how cells relate to each other.
Most importantly, the faces from each cell can be accessed by a tree structure for the {p,3} tiling, with face types A and B. With a single central face, the radius 1 pattern is {A}^p, and the transition rules are:
A → {A}^(p-5)B
B → {A}^(p-6)B
So for {6,3}, we have a starting pattern of A (repeated 6 times), and transition rules A → AB, B → B. And for {7,3}, the starting pattern is A (repeated 7 times), and the transition rules are A → AAB, B → AB.
Note: A faces have a bottom edge, and B faces have a bottom vertex that point towards the circle center.
We can use this to access child cells from R as following: The central face generates an F cell, its edges generate p E cells, and its vertices generate p V cells.
Each A face on a circle with radius > 0 generates an F cell, p-2 E cells (one for each edge except for the bottom and left side edge), and p-2 V cells (one for each non-bottom-edge vertex).
Each B face on a circle with radius > 0 generates an F cell, p-1 E cells (one for each edge except for the left side edge), and p-1 V cells (one for each non-bottom vertex).
For F, E and V cells we can generate circles around the bottom face, edge or vertex in a similar way. However, the first circle around those only contains side faces, and only starting with the circle around this child cells will be generated.
One thing that is also important for a software implementation of those trees is cell orientation, and how child cell orientation is determined based on parent cell orientation. But I don't think that it's very difficult to find a suitable implementation.
P.S.: I wonder how easy or difficult it is to find tree structures for the 3 bitruncations of the compact regular honeycombs 2t{5,3,4} = 2t{4,3,5}, 2t{3,5,3}, or 2t{5,3,5}, with order-4 vertices and at least one Archimedean cell type.
There's a class of uniform hyperbolic honeycombs called borromeachoron, as defined here.[os2fan2.com]
It has cube and p-gonal prism cells, with a fixed p ≥ 3 for each specific honeycomb. Prisms meet at their base polygon, and cubes are attached to the prisms at their (non-base polygon) squares. To each cube face, a prism is attached with a (non-base polygon) square, according to pyritohedral symmetry, similar to how bilunabirotundae are attached to cube faces in this Euclidean honeycomb (see rightmost picture).[en.wikipedia.org]
For p = 4 we get a lower symmetry interpretation of {4,3,5}, where some cubes are interpreted as square prisms. If we look at {4,3,5} cells whose center lie in a common {4,5} plane with this interpretation, it will always look like this:
https://steamcommunity.com/sharedfiles/filedetails/?id=1543018703
The blue squares represent square prisms that form stacks that lie entirely in the plane. The green squares represent single cubes, with square prisms around them. And the red squares represent square prisms that form prism stacks that only have one cell in common with the displayed plane.
The dual of this interpretation is {5,3,4}, with the dodecahedron cells being interpreted as pyritohedra.
I am mentioning this here, because
If all cell faces lie in a plane that doesn't pass through other cells, and the honeycomb has a relatively simple symmetry, then there's a straightforward way to implement a tree structure based on vertex adjacency:
I have successfully applied this approach to a somewhat exotic honeycomb, which takes the pyritohedron cells from the dual of the triangular borromeachoron honeycomb, and splits each pyritohedron into 2*4 mirror-symmetric asymmetric triangular trapezohedra.[en.wikipedia.org]
Each trapezohedron has 6 identical faces, which are Lambert quadrilaterals with an acute 60° angle.
A trapezohedron has 6 edges of type a, and 3 edges of type b and h, each. There are 4 cells around a or h edges, and 6 cells around b edges.
There are 2 vertices of type C where 3 a edges meet, and 6 vertices of type P where 3 edges of all types (a, b, h) meet. So there are 8 cells around each C vertex, and 12 cells around each P vertex.
If there is interest, I can go into more detail about this honeycomb, but for now I will focus on the transition rules, as an example for a tree structure for a honeycomb with different cell, edge and vertex types:
XF → {1 YF | 1 XB}
XA → {2 YF, 1 XA | 2 XB, 2 YP}
XB → {2 YF, 1 XH | 2 XB, 2 YP}
XH → {2 YF, 2 XB, 1 YB | -}
XC → {3 YF, 3 XA, 1 YC | 3 XB, 3 YP}
XP → {3 YF, 1 XA, 1 XH, 2 XB, 1 YB, 2 YP, 1 XP | 1 XB, 1 YP}
X and Y denote the two mutually mirror-symmetric cell types. The transition rules are only given for an X parent cell, but the rules for the mirror-symmetric Y cell look the same, except that X and Y are swapped.
XF is of cell type F.
XA, XB and XH are of cell type E (refering to different bottom edge types a, b and h).
XC and XP are of cell type V (refering to different bottom vertex types C and P).
In the {}, I listed the trivial child cells first, followed by the less trivial child cells after the '|'.
This example also illustrates how the cells in a honeycomb can be subdivided, s.th. this approach can be applied to the new cells.
(extending the pyritohedron faces to planes means that those planes pass through the centers of other pyritohedron cells, so this approach wouldn't work for the original honeycomb, and a subdivision was necessary for this approach)
Some open questions:
Out of curiosity: For [5,3,4} and {4,3,5}, do you use the tree structures from this thread? Or do you use the simpler {5,3,4} tree structure for both {5,3,4} and {4,3,5}? Or did you find trees where each cell only links to face-adjacent neighbors? In the latter case, I'd be interested about the tree structure.
Also, let me know if you want me to try to figure out certain tree structures. The ones for {4,3,8} or the runcinated order-5 cubic honeycomb should be quite simple. And I could provide absolute lengths and angles for the honeycomb from my last post, i.e. the one with the asymmetric triangular trapezohedron cells, which is related to the triangular borromeachoron honeycomb.