Hexagonal tiling: Difference between revisions
| Line 138: | Line 138: | ||
== Software support == | == Software support == | ||
While most of the commonly used general-purpose cellular automaton simulation programs extend support to hexagonal grids, such support is not perfect. | |||
=== Information below this point to be refactored === | === Information below this point to be refactored === | ||
Revision as of 12:37, 12 January 2022
The hexagonal tiling, hexagonal grid, hexagonal tessellation or hexagonal lattice (Schläfli symbol: {6,3}) is one of the three possible proper Euclidean tilings of 2D space, alongside the square tiling and triangular tiling. It is constructed with three hexagons being placed at each vertex.
While not nearly as heavily investigated as the square tiling, many general-purpose cellular automaton simulation programs support hexagonal tilings to an extent. However, since most of these have a primary focus on square tilings, such support is seldom without flaw.
Coordinates, directions and displacements
While Cartesian coordinates can be used to describe the positions of hexagons, this does not preserve symmetry well, as it effectively treats the hexagonal tiling as a square tiling and fails to consider its unique symmetries. While there exist many coordinate systems which can be used to describe the coordinates of hexagons in a symmetrical way, such as cube coordinates, none seem to be in use in cellular automaton simulation programs.
Orthogonal and diagonal directions
While the existence of distinct orthogonal and diagonal directions on a hexagonal grid is not immediately as obvious as on a square grid, they are distinct and have been defined.[1] The six cells which are directly adjacent to a central cell in the "hexagonal neighbourhood" (see the dedicated neighbourhoods section below) are considered to be orthogonally adjacent to said center cell. The six directions directly between these, which travel directly through hexagon edges, can be said to be the diagonal directions. These satisfy much of the equivalencies expected of diagonal directions.
Neighbourhoods on the hexagonal tiling
Range-1 cases
The most obvious neighbourhood to define on a hexagonal tiling would be the neighbourhood composed of the six cells orthogonally adjacent to a center cell. This neighbourhood, referred to as the hexagonal neighbourhood, is by far the most commonly investigated.
Another simple neighbourhood, called the tripod neighbourhood, can be defined by only considering every second cell adjacent to the central cell.[2] This neighbourhood has an essence of intrinsic chirality; having only half of the rotational symmetry of the usual hexagonal neighbourhood, as well as the fact that cells which are in one cell's tripod neighbourhood not including the original cell in their tripod neighbourhood (as the neighbourhood is only translated, and is never rotated or reflected),[3] imparts rather strange mechanics upon rules which use it.
|
|
| hexagonal | tripod |
|---|
Higher ranges
It is entirely possible to extend the aforementioned hexagonal and tripod neighbourhoods to higher ranges, such that cells which are not immediately orthogonally or diagonally adjacent to the central cell are also included in the neighbourhood.
The tripod neighbourhood is usually extended simply by continuing in the direction in which each cell in the range-1 tripod neighbourhood points in by one more cell, yielding what is referred to as the tripod neighbourhood of range 2.
There are two immediately obvious ways in which the hexagonal neighbourhood can be extended to a range of 2:
- by counting all of the cells in the hexagonal neighbourhood of the cells which are in turn already in the hexagonal neighbourhood of a designated central cell, or
- by counting all of the cells which are at an orthogonal distance 1 or 2 from a central cell.
The former is usually referred to as the hexagonal neighbourhood of range 2. The latter is referred to as the asterisk neighbourhood of range 2,[4] giving a figure which resembles the typographic symbol.
These three methods can be used to generate neighbourhoods of any desired positive integer range, not just 1 or 2. Examples up to a range of 3 can be seen below.
| Range \ Type | hexagonal neighbourhood | asterisk neighbourhood | tripod neighbourhood |
|---|---|---|---|
| 1 |
|
|
|
| 2 |
|
|
|
| 3 |
|
|
|
Symmetries
All of the static and kinetic symmetries which are present on the hexagonal tiling also apply to the triangular tiling.
Static
Isotropic rules on the hexagonal tiling will always confirm to one of 14 different static symmetries. Its sixfold rotational and reflectional symmetry permits asymmetry, twofold cyclic symmetry, threefold cyclic symmetry, sixfold cyclic symmetry, twofold mirror symmetry, fourfold mirror symmetry, sixfold mirror symmetry and twelvefold mirror symmetry, with further variants depending on the positioning of the center of rotation or the positioning and/or rotation of the planes of reflection.
| Asymmetry | Rotational symmetries | ||||
|---|---|---|---|---|---|
| Onefold | Twofold | Threefold | Sixfold | ||
| Cell-centered | Vertex-centered | Cell-centered | Vertex-centered | ||
| C1 | C2_1 | C2_4 | C3_1 | C3_3 | C6 |
| Reflectional symmetries | Rotational and reflectional symmetries | ||||||
|---|---|---|---|---|---|---|---|
| Twofold | Fourfold | Sixfold | Twelvefold | ||||
| Diagonal | Orthogonal | Cell-centered | Edge-centered | Cell-centered | Vertex-centered | ||
| Diagonal | Orthogonal | ||||||
| D2_x | D2_xo | D4_x1 | D4_x4 | D6_1 | D6_1o | D6_3 | D12 |
Kinetic
In addition to these 14 static symmetries, periodic patterns can also conform to one of many possible distinct kinetic symmetries. 14 of these duplicate the static symmetries above, with the rest arising for periodic patterns which have a mod unequal to their period.
As of January 2022, it appears as though either not all static symmetries on hexagonal grid have been enumerated, or any such enumeration which has happened is not common knowledge.
Emulation on a square grid
As almost all known cellular automata simulation programs use a square grid and Cartesian coordinates, the hexagonal neighbourhood does not arise naturally like the von Neumann and Moore neighbourhoods do. As such, simulating hexagonal rules demands that the hexagonal grid be "emulated" on the square grid.
The following demonstration shows how the range-1 hexagonal neighbourhood can be represented on the square tiling. It resembles a Moore neighbourhood with two opposite diagonal corners removed, resulting in something which resembles a ship. This functionally works identically to a hexagonal neighbourhood, although at the cost of visual distortion and a loss of symmetry.
|
|
|
| Emulated hexagonal neighbourhood | How the hexagonal neighbourhood is usually emulated on a square tiling | True hexagonal neighbourhood |
|---|
Software support
While most of the commonly used general-purpose cellular automaton simulation programs extend support to hexagonal grids, such support is not perfect.
Information below this point to be refactored
This is mitigated differently depending on the simulation program used:
- Golly has a dedicated icon used for hexagonal rules. When active, it renders each cell as a slanted hexagon which combine to form a distorted hexagonal grid,[5] which makes the roles of each cell slightly clearer, although not perfectly. The hexgrid.lua script can be used to view patterns on a hexagonal grid clearly, however this is only available for desktop computers.
- LifeViewer renders the entire grid as a hexagonal grid, making how patterns actually look much clearer.
However, the following functionalities currently either do not work for hexagonal grids, or treat the rule as a square-grid rule, resulting in anomalous behaviour:
- Bounded grids are still based on a square grid, resulting in a "bounded rhombus" (and forbidding potential hexagonal manifolds such as Dyck's surface)
- Selections are still based on a square grid, resulting in functionally rhombic selections
- Selection rotations are still based on a square grid, forbidding 60-, 120-, 240- and 300-degree rotations (while allowing 90- and 270-degree rotations, which scramble patterns into something functionally different)
- Selection reflections are still based on a square grid, which pose a similar problem to the above
- Coordinates are still Cartesian, rather than using a hexagonal-based system such as cube coordinates
- Custom outer-totalistic neighbourhoods are still based on subsets of the Moore neighbourhood
In addition, the following LifeViewer functions are not (currently) available for hexagonal grids:
- Visual rotation, tilt, layers and layer depth
- Identify mod and direction calculations
- Bounding box values as well as spaceship displacement (header only) are still produced, however do not make much sense due to still being square-based
- Major grid lines
- Become visible when "Use Rectangles" is enabled, however in this case said lines are square-based and distorted
References
- ↑ https://www.conwaylife.com/forums/viewtopic.php?f=3&t=1622&p=128726#p128726
- ↑ EricG (September 9, 2012). Triangular & Tripod von Neuman neighborhoods (discussion thread) at the ConwayLife.com forums
- ↑ http://cell-auto.com/neighbourhood/tripod/index.html
- ↑ https://www.conwaylife.com/forums/viewtopic.php?f=3&t=1622&p=99663#p99663
- ↑ QuickLife at Golly's online help









