Euclidean Tiling (2019)

Systematic generation of regular polygon tessellations using an expressive notation.

Live Editor

Tiling Configurations

4-Uniform (3 Vertex Types)

Euclidean tiling are a covering of a plane where the repetition of polygons make up tiles, which through symmetry operations can be extended indefinitely without any overlapping. There are three types of tilings:
Tiling configurations are usually named using a notation, which represents the number of vertices; the number of polygons around each vertex (arranged clockwise) and the number of sides to each of those polygons. For example:

(3⁶)²; 3⁴.6

This notation (Cundy & Rollett's) tells us there are 3 vertices with 2 different vertex types, so this tiling would be classed as a '3-uniform (2 vertex types)' tiling. Broken down, (3⁶)² tells us there are 2 vertices (denoted by the superscript 2), each with 6, 3 sided polygons (equilateral triangles). With a final vertex (3⁴.6) of 4 more 3 sided polygons and a single 6 sided polygon (hexagon).
However, this notation has a problem. When it comes to k-uniform tilings, the notation does not explain the relationships between the vertices. This makes it impossible to generate a covered plane given the notation alone. Taking the above (3⁶)²; 3⁴.6 notation as an example. If a single vertex was placed, surrounded by 4, 3 sided polygons and a 6 sided polygon, there would be 3 other vertices with 2, 3 sided polygons. From here either the vertex type of (3⁶)² or 3⁴.6 is possible, and the notation gives no indication to which is correct.

An Expressive and Generative Notation

This is a slightly modified version of the research and notation presented by Valentin Gomez-Jauregui, in Generation and nomenclature of tessellations and double-layer grids, that allows for the infinite generation of regular polygon tilings through a set of shape placement stages and iterative rotation and reflection operations.
The stages are represented as forward-slash (/) separated blocks. When split up, the very first block is the "Shape placement" stage, this takes care of placing the regular polygons on the plane. The blocks after this are the transformation functions, of which there can be two or more of.

Stage 1: Shape placement

The shape placement stage is made up of a series of hyphen (-) separated phases. Similar to the Cundy & Rollett's notation, each number represents the number of sides on the polygon. The very first phase will always contain a single number of either 3, 4, 6, 8 or 12* (see 'Angles' at the end to understand why these are the only possible shapes). This defines the 'seed' shape which is the first shape to be placed at the center of the area to be covered.
The seed shape is always (except for 3 sided polygon) placed at the center of the plane so that "the two sides that intersect the horizontal axis "x", stay perpendicular to that axis" (V. Gomez-Jauregui, 2012), as shown below. For a 3 sided polygon "the left-hand edge will be the one perpendicular to the x axis and will be aligned with the vertical axis 'y'" (V. Gomez-Jauregui, 2012).

3 Sides

4 Sides

6 Sides

8 Sides

12 Sides

Following the seed shape phase, shapes are systematically placed clockwise around the available sides of the previously placed phase of shapes, using 0 to skip a side of a polygon.


Using the (3⁶)²; 3⁴.6 configuration as an example. With this new notation as shown above, the shape placement stages consist of:
  • A seed shape with 6 sides (a hexagon).
  • A following phase with a 3 sided shape (triangle); placed on the first side clockwise of the y axis
  • Followed by a final phase of two 3 sided shapes; placed on the only two available sides from the previously placed triangle.

Stage 2: Transformation functions

The stages following the first shape placement stage are a series of transformation functions that take all of the shapes currently placed on the plane and either rotate or reflect them by a specified angle (when no angle is specified it defaults to 180°). The origin of the transformation can also be specified, which defaults to the center of the plane.
The type of transformation is represented in the notation by a single character. An 'm' (mirror) applies a reflection transformation and a 'r' applies a rotation transformation. When specifying the origin of the transformation, it also slightly changes the behaviour of the ensuing transformation result.
There are 3 types of transformation origins...
Origin 1. Center of the plane
This is the default origin type and when used, the transformation is applied continuously by incrementing the angle on each transformation by a factor of 2. This is done while the accumulated angle is less than 360°. This is the case for both reflection and rotation transforms. With every iteration of the transform, all shapes on the plane including those from previous iterations of the same transform are then duplicated.


Using the (3⁶)²; 3⁴.6 configuration as an example. The first transformation operation is m60 (reflect at the center of the plane by 60°). So all of the transformational operations performed would be:
  • Reflect 60°
  • Reflect 120° (60° x2)
  • Reflect 240° (120° x2). This is the last reflection as 240° x2 is 480° and is above the 360° limit.
Origin 2. Edge of a shape
There will always be a need for two or more transforms in order to completely cover a plane. At least one of these transform functions will need to shift the origin in order to expand the collection of shapes out to increase the area coverage. One way to do this is by shifting the origin to the edge of another shape.
Unlike when the origin is at the center of the plane, transforms with it's origin elsewhere are not continuous. In other words they are performed only once before moving onto the next transform.
The notation for shifting the origin to a shape's edge is done by specifying at what angle the point of origin is from the y axis and how many intersecting edges from the center point of the plane it is. For example, take the transform function r30(2e). Imagine a line drawn starting from the center of the plane with an endpoint at 30°. The second edge intersecting that line would become the transform's new point of origin. In which the shapes are then rotated by 180°. However this 180° is now relative to the intersecting line, and the center point of the plane becomes 0°.


Using the (3⁶)²; 3⁴.6 configuration as an example. The second transformation function is r30(2e) (rotate 180° at the edge of the second intersecting shape at 30°).
When shifting the origin to the edge of a shape for a reflection transform, it will never be needed to provide a transformation angle. This is because anything other the angle of the intersecting edge will result in an overlapping and invalid tessellations. The only valid and correct angle can easily be inferred from the angle of the intersecting edge.
Origin 3. Center of a shape
Similar to shifting the point of origin to the edge of a shape, the origin can also be shifted to the center point of a shape. However there are a couple of differences. The format of the notation is very similar, for example r30(2c), except this origin type is represented by a `c`. Instead of specifying the number of intersecting edges, it's simply the number of intersecting shapes (excluding the seed shape). This also allows for some flexibility in the angle of the intersection line as it does not have to target the center point of the shape directly. The shape simply needs to intersect on that line.
Unlike the edge origin type, when this is applied on a reflection transform the angle of the transform is always respected.


Using the [3³.4²; 3².4.3.4]¹ configuration as an example. The second transformation function is m60(2c) (reflect over a line 180° relative to the intersection angle, at the center of the second intersecting shape at 60°).

Stage 3: Repeating the transformations

This is the final stage to completing the tiling, and it's simply repeating over the transformation functions as many times as are needed. Providing the configuration is correct, this should not result in any shape overlaps (apart from those excluded from the transformation functions), and it should continuously and indefinitely grow.


Using the (3⁶)²; 3⁴.6 configuration as an example. Both transformation functions m60 and r30(2e)are continuously repeated, each time taken the shapes that are currently on the plane.

* Angles - For a valid tessellation that produces no gaps, the sum of the interior angles of every shape around a vertex must equal 360°. For example, the interior angle of an equilateral triangle is 180°/3=60°, therefore you can have 6 triangles around a vertex as 360°/60°=6.

Taking the pentagon (unusable for regular tessellations) as an example the interior angle is 540°/5=108°. While you could place this around a vertex with a regular square and a icosagon (108°+90°+162°=360°), the next available vertices would not allow for this same configuration.

In total, there are seventeen combinations of regular polygons whose internal angles add up to 360°. However only eleven of these can occur in regular polygon tilings.


Gomez-Jauregui, Valentin & Otero, César & Arias, Ruben & Manchado, Cristina. (2012). Generation and Nomenclature of Tessellations and Double-Layer Grids. Journal of Structural Engineering. 138. 843–852. 10.1061/(ASCE)ST.1943-541X.0000532.