GomJau-Hogg’s Notation for Automatic Generation of k-Uniform Tessellations with ANTWERP v3.0

: Euclidean tilings are constantly applied to many ﬁelds of engineering (mechanical, civil, chemical, etc.). These tessellations are usually named after Cundy & Rollett’s notation. However, this notation has two main problems related to ambiguous conformation and uniqueness. This communication explains the GomJau-Hogg’s notation for generating all the regular, semi-regular (uniform) and demi-regular (k-uniform, up to at least k = 3) in a consistent, unique and unequivocal manner. Moreover, it presents Antwerp v3.0, a free online application, which is publicly shared to prove that all the basic tilings can be obtained directly from the GomJau-Hogg’s notation.


Introduction
Euclidean tiling is the covering of a plane where the repetition of regular polygons make up tiles, which through symmetry operations can be extended indefinitely without any overlapping [1]. There are three types of tilings: Tiling configurations are usually named using Cundy & Rollett's notation [2], which adapted the Schläfli symbol. This notation represents (i) the number of vertices, (ii) the number of polygons around each vertex (arranged clockwise) and (iii) the number of sides to each of those polygons. For example: 3 6 ; 3 6 ; 3 4 .6, 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 6 ; 3 6 (both of different transitivity class), or (3 6 ) 2 , tells us that there are 2 vertices (denoted by the superscript 2), each with 6 equilateral 3-sided polygons (triangles). With a final vertex 3 4 .6, 4 more contiguous equilateral triangles and a single regular hexagon.

Problems of Cundy & Rollett Notation
The Cundy & Rollett notation has two main problems. First, 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. Let us take the above notation as an example, (3 6 ) 2 ; 3 4 .6: If a single vertex was placed, surrounded by 4 triangles and a hexagon (3 4 .6), there would be 3 other vertices with 2 triangles (A, B and C in Figure 4c). From here, either the vertex type of 3 6 (as shown if Figure 4b

Problems of Cundy & Rollett Notation
The Cundy & Rollett notation has two main problems. First, 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. Let us take the above notation as an example, (3 6 ) 2 ; 3 4 .6: If a single vertex was placed, surrounded by 4 triangles and a hexagon (3 4 .6), there would be 3 other vertices with 2 triangles (A, B and C in Figure 4c). From here, either the vertex type of 3 6 (as shown if Figure 4b) or 3 4 .6 (Figure 4c) is possible, and the notation gives no indication to which is correct.

Problems of Cundy & Rollett Notation
The Cundy & Rollett notation has two main problems. First, 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. Let us take the above notation as an example, (3 6 ) 2 ; 3 4 .6: If a single vertex was placed, surrounded by 4 triangles and a hexagon (3 4 .6), there would be 3 other vertices with 2 triangles (A, B and C in Figure 4c). From here, either the vertex type of 3 6 (as shown if Figure 4b) or 3 4 .6 (Figure 4c) is possible, and the notation gives no indication to which is correct.

Problems of Cundy & Rollett Notation
The Cundy & Rollett notation has two main problems. First, when it comes to kuniform tilings, the notation does not explain the relationships between the vertices. This makes it impossible to generate a covered plane given the notation alone. Let us take the above notation as an example, (3 6 ) 2 ; 3 4 .6: If a single vertex was placed, surrounded by 4 triangles and a hexagon (3 4 .6), there would be 3 other vertices with 2 triangles (A, B and C in Figure 4c). From here, either the vertex type of 3 6 (as shown if Figure 4b) or 3 4 .6 ( Figure 4c) is possible, and the notation gives no indication to which is correct.
All three tessellations, with the same nomenclature, are represented in Figure 5. The tilings are very similar but it can be noticed that the relative positions of the hexagons are Symmetry 2021, 13, 2376 3 of 18 different. Therefore, the second problem is that this nomenclature is not unique for each tessellation [3]. All three tessellations, with the same nomenclature, are represented in Figure 5. The tilings are very similar but it can be noticed that the relative positions of the hexagons are different. Therefore, the second problem is that this nomenclature is not unique for each tessellation [3].

GomJau-Hogg's Notation: A New Notation
Here we present the GomJau-Hogg's notation, a slightly modified version of the research and notation presented by Gómez-Jáuregui et al. [3], about the generation and nomenclature of tessellations and double-layer grids. The origin of that notation is inspired by Otero's work [1] about domes and spatial frames. The present work allows for the infinite generation of regular polygon tilings through a set of shape placement stages and iterative rotation and reflection operations.   All three tessellations, with the same nomenclature, are represented in Figure 5. The tilings are very similar but it can be noticed that the relative positions of the hexagons are different. Therefore, the second problem is that this nomenclature is not unique for each tessellation [3].

GomJau-Hogg's Notation: A New Notation
Here we present the GomJau-Hogg's notation, a slightly modified version of the research and notation presented by Gómez-Jáuregui et al. [3], about the generation and nomenclature of tessellations and double-layer grids. The origin of that notation is inspired by Otero's work [1] about domes and spatial frames. The present work allows for the infinite generation of regular polygon tilings through a set of shape placement stages and iterative rotation and reflection operations.

GomJau-Hogg's Notation: A New Notation
Here we present the GomJau-Hogg's notation, a slightly modified version of the research and notation presented by Gómez-Jáuregui et al. [3], about the generation and nomenclature of tessellations and double-layer grids. The origin of that notation is inspired by Otero's work [1] about domes and spatial frames. The present work allows for the infinite generation of regular polygon tilings through a set of shape placement stages and iterative rotation and reflection operations.
Several examples will be used in the following sections. The above mentioned (3 6 ) 2 ; 3 4 .6 (the first of the three variants) is translated to 6-3-3/m30/r(v3). The stages are represented as blocks separated by a forward-slash (/). When split up, the very first block is the "Shape placement" stage, which takes care of placing the first regular polygons on the plane. The blocks after this are the transformation functions, of which there will be two or more.

Stage 1: Polygon 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.

•
Phase 1 (seed polygon phase): The very first phase will always contain a single number of either 3, 4, 6, 8 or 12. This is because 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 [4]. This defines the 'seed polygon', which is the first shape to be placed at the origin of the area to be covered.

•
The seed polygon is always (except for the 3-sided polygon, equilateral triangle) placed at the origin of the plane so that the two sides that intersect the horizontal axis "x", stay perpendicular to that axis ( Figure 6). For an equilateral triangle the left-hand edge will be the one perpendicular to the x axis and will be aligned with the vertical axis 'y' [3] (Figure 7). • Phase 2: Following the first phase, regular polygons are systematically placed clockwise around the available sides of the seed polygon, using 0 to skip a side of a polygon. The principle is to first fill the upper right quadrant and then move clockwise.

Stage 1: Polygon 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.


Phase 1 (seed polygon phase): The very first phase will always contain a single number of either 3, 4, 6, 8 or 12. This is because 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 [4]. This defines the 'seed polygon', which is the first shape to be placed at the origin of the area to be covered.  The seed polygon is always (except for the 3-sided polygon, equilateral triangle) placed at the origin of the plane so that the two sides that intersect the horizontal axis "x", stay perpendicular to that axis ( Figure 6). For an equilateral triangle the left-hand edge will be the one perpendicular to the x axis and will be aligned with the vertical axis 'y' [3] (Figure 7).  Phase 2: Following the first phase, regular polygons are systematically placed clockwise around the available sides of the seed polygon, using 0 to skip a side of a polygon. The principle is to first fill the upper right quadrant and then move clockwise.  Phase 3 (and 4, 5, etc.): Regular polygons are systematically placed clockwise around the available sides of the polygons placed in the previous phase, in the same manner as in phase 2.
Let us use the above configuration example, (3 6 ) 2 ; 3 4 .6 in its former notation, which would become GomJau-Hogg's notation 6-3-3/m30/r(v3) ( Figure 6). With this new notation as shown above, the polygon placement stage (6-3-3) consists of: 1. A seed polygon with 6 sides. In Figure 6, hexagon in dark blue. 2. A following phase with a three-sided shape; placed on the first side clockwise of the y axis. In Figure 6, equilateral triangle in light blue. 3. Followed by a final phase of one triangle; placed on the first available side clockwise, of the previously placed triangle. In Figure 6, equilateral triangle in white.

Stage 2: First Transformation Function
The stages following the first polygon placement stage are a series of transformation functions that take all of the shapes currently placed on the plane. It is necessary to define 3 parameters for each transformation: the type of transformation, the angle and the origin.
1. Type of transformation: It is represented in the notation by a single character. An 'm' (mirror) applies a reflection transformation and a 'r' applies a rotation transformation. 2. Angle: When we have the polygons of the first stage, it is necessary to either rotate or reflect them by a specified angle. When no angle is specified it defaults to 180°. 3. Origin: The origin of the transformation is specified between parentheses. When no origin is specified it defaults to the center of the coordinate system. There are 2 types Let us use the above configuration example, (3 6 ) 2 ; 3 4 .6 in its former notation, which would become GomJau-Hogg's notation 6-3-3/m30/r(v3) ( Figure 6). With this new notation as shown above, the polygon placement stage (6-3-3) consists of:

1.
A seed polygon with 6 sides. In Figure 6, hexagon in dark blue.

2.
A following phase with a three-sided shape; placed on the first side clockwise of the y axis. In Figure 6, equilateral triangle in light blue. 3. Followed by a final phase of one triangle; placed on the first available side clockwise, of the previously placed triangle. In Figure 6, equilateral triangle in white.

Stage 2: First Transformation Function
The stages following the first polygon placement stage are a series of transformation functions that take all of the shapes currently placed on the plane. It is necessary to define 3 parameters for each transformation: the type of transformation, the angle and the origin.

1.
Type of transformation: It is represented in the notation by a single character. An 'm' (mirror) applies a reflection transformation and a 'r' applies a rotation transformation.

2.
Angle: When we have the polygons of the first stage, it is necessary to either rotate or reflect them by a specified angle. When no angle is specified it defaults to 180 • . 3.
Origin: The origin of the transformation is specified between parentheses. When no origin is specified it defaults to the center of the coordinate system. There are 2 types of transformation origins, explained in the following lines.

Origin 1. Center of the Coordinate System-Continuous Centered Transformation
This is the default origin type (it is not defined between parentheses) 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 a full rotation on the plane (e.g., 360 • ). This is the case for both mirroring (m) and rotation (r) transforms. With every iteration of the transform, all shapes on the plane including those from previous iterations of the same transform are then duplicated (there may be overlapping of a polygon over the same shape, which would be automatically merged). Let us again take the previous example, 6-3-3/m30/r(v3) in order to explain the meaning of m30, shown in m30: Type of transform: m for mirroring. Angle 30 • . An origin is not specified between parentheses, therefore the origin is the center of the coordinate system. Therefore this transform is going to reflect by 30 • the elements of the previous phase obtained in Figure 6 along an axis passing by the center of the coordinate system.

4.
Reflect 240 • (120 • × 2) the result of the previous transformation. This is the last reflection as 240 • × 2 is 480 • and is above the 360 • limit.    Figure 9 shows another example (4-3-4,3/r90) where, instead of mirroring, a transformation has been applied by means of a series of rotations.

Origin 2. Points on the Polygons-Eccentric Transformation
There will always be a need for two or more transforms to completely cover a plane. At least one of these transform functions will need to shift the transform's origin from the center of the coordinate system in order to expand the collection of shapes out to increase Symmetry 2021, 13, 2376 6 of 18 the area coverage. This is done by shifting the transform's origin to either the vertex of a polygon, the centroid of a polygon or a midpoint of a line segment.  Figure 9 shows another example (4-3-4,3/r90) where, instead of mirroring, a transformation has been applied by means of a series of rotations.

Origin 2. Points on the Polygons-Eccentric Transformation
There will always be a need for two or more transforms to completely cover a plane. At least one of these transform functions will need to shift the transform's origin from the center of the coordinate system in order to expand the collection of shapes out to increase the area coverage. This is done by shifting the transform's origin to either the vertex of a polygon, the centroid of a polygon or a midpoint of a line segment.
Unlike when the transform's origin is at the center of the plane, transforms with its origin elsewhere are not continuous. In other words, they are performed only once before moving onto the next transform.
The notation for shifting the transform's origin is done by specifying the vertex index. The vertices available for a transform are systematically indexed prior to the transformation and are grouped by their vertex type and ordered by their distance and angle, relative to the center of the coordinate system. Polygon centroids are prefixed with a 'c', vertices of a polygon are prefixed with a 'v' and line halfway points are prefixed with an 'h'.
Starting at 0° of the coordinate system, there are 4 vertices that exist at this angle, labelled h1, v1, h2 and v2 in order of the shortest distance to the origin. Moving clockwise, they are followed by vertex h3 which is next in turn by angle to the origin, and so on. As Unlike when the transform's origin is at the center of the plane, transforms with its origin elsewhere are not continuous. In other words, they are performed only once before moving onto the next transform.
The notation for shifting the transform's origin is done by specifying the vertex index. The vertices available for a transform are systematically indexed prior to the transformation and are grouped by their vertex type and ordered by their distance and angle, relative to the center of the coordinate system. Polygon centroids are prefixed with a 'c', vertices of a polygon are prefixed with a 'v' and line halfway points are prefixed with an 'h'.
Taking the configuration 3-6 ( Figure 10, left), there are 16 possible origins in total, made up of 2 shape centroids (c1 to c2), 6 polygon vertices (v1 to v6) and 8 line segment halfway points (h1 to h8). Excluding the coordinate system center vertex. an example it would then be possible to reflect over the 1st vertex by specifying m(h7) in the notation (Figure 10, right), and the vertices would be reindexed for the next transformation function. When specifying the vertex of a polygon's centroid (Figure 11) or vertex (Figure 12), the angle that is used for the transformation is inferred from the angle of that vertex relative to the center of the coordinate system. However, when using the midpoint of a line segment (the polygon's edge, as shown in Figure 10, right), the angle for the transform is inferred from the angle of that edge because any other angle would result in an incorrect overlapping and an invalid tessellation. Starting at 0 • of the coordinate system, there are 4 vertices that exist at this angle, labelled h1, v1, h2 and v2 in order of the shortest distance to the origin. Moving clockwise, they are followed by vertex h3 which is next in turn by angle to the origin, and so on. As an example it would then be possible to reflect over the 1st vertex by specifying m(h7) in the notation (Figure 10, right), and the vertices would be reindexed for the next transformation function.
When specifying the vertex of a polygon's centroid (Figure 11) or vertex (Figure 12), the angle that is used for the transformation is inferred from the angle of that vertex relative to the center of the coordinate system. However, when using the midpoint of a line segment (the polygon's edge, as shown in Figure 10, right), the angle for the transform is inferred from the angle of that edge because any other angle would result in an incorrect overlapping and an invalid tessellation. When specifying the vertex of a polygon's centroid (Figure 11) or vertex (Figure 12), the angle that is used for the transformation is inferred from the angle of that vertex relative to the center of the coordinate system. However, when using the midpoint of a line segment (the polygon's edge, as shown in Figure 10, right), the angle for the transform is inferred from the angle of that edge because any other angle would result in an incorrect overlapping and an invalid tessellation.    When specifying the vertex of a polygon's centroid (Figure 11) or vertex (Figure 12), the angle that is used for the transformation is inferred from the angle of that vertex relative to the center of the coordinate system. However, when using the midpoint of a line segment (the polygon's edge, as shown in Figure 10, right), the angle for the transform is inferred from the angle of that edge because any other angle would result in an incorrect overlapping and an invalid tessellation.

Stage 3: Repeating the Transformations
This is the final stage to completing the tiling, which consists of continuously repeating over the transforms in order, indefinitely ( Figure 13). For notations that are valid, the tessellation would continue to grow, increasing in surface area. Shapes being reflected into the exact position of an existing shape are merged, however valid notations should not result in any gaps or intersecting shapes-as shown in Figure 14.

Stage 3: Repeating the Transformations
This is the final stage to completing the tiling, which consists of continuously repeating over the transforms in order, indefinitely ( Figure 13). For notations that are valid, the tessellation would continue to grow, increasing in surface area. Shapes being reflected into the exact position of an existing shape are merged, however valid notations should not result in any gaps or intersecting shapes-as shown in Figure 14.

ANTWERP, the Software
The notation presented above has been thoroughly proved by means of the software "ANTWERP: Application for Nets and Tessellations With Edge-to-edge Regular Polygons", in its version v3.0 [5]. ANTWERP is a free online application, which is publicly shared to prove that all the basic tilings can be obtained directly from the GomJau-Hogg's notation. It lets the user automatically generate all of the existing regular and semi-regular tilings as well as the demi-regular tilings. The latter are also called k-uniform.

ANTWERP, the Software
The notation presented above has been thoroughly proved by means of the software "ANTWERP: Application for Nets and Tessellations with Edge-to-edge Regular Polygons", in its version v3.0 [5]. ANTWERP is a free online application, which is publicly shared to prove that all the basic tilings can be obtained directly from the GomJau-Hogg's notation. It lets the user automatically generate all of the existing regular and semi-regular tilings as well as the demi-regular tilings. The latter are also called k-uniform.
The first version of this application (v1.0) was originally coded with Visual Basic for Application (VBA) applied to AutoCad. The main problem was that users without Autocad could not exploit the program. In its second version, ANTWERP v2.0 was accessible over a network connection using HTTP; therefore the program could be run from any PC, tablet, phone, etc. on a web browser that supported WebGL (over JavaScript).
The current version, ANTWERP v3.0, uses an updated version of the notation, from that presented previously [3], with greater flexibility to generate the more complex tessellations. It is a TypeScript React application, with a custom tessellation renderer that has been published as a package (available online: https://www.npmjs.com/package/@hhogg/ antwerp, accessed on 29 October 2021) to produce SVGs from the notation. This package can be imported into any Web Application that takes this notation (plus some optional configuration) and renders a downloadable SVG file.

Results
One of the main results is the production of Table 1 and Appendix A, which show the translation from Cundy & Rollett's notation to GomJau-Hogg's notation for the most basic tilings, in such a way that if solves the two main problems of Cundy & Rollett's notation: 1.
The notation of the tilings can be automatically generated without ambiguity 2.
There is no repetition on the names of the tilings, they are unique. Table 1 and Appendix A list only the k-uniform tessellations for k < 4. More complex tilings can be named and generated with GomJau-Hogg's notation, but the list is longer and longer as k increases. According to Galebach [6], the number of tilings for k = 1 is 11, for k = 2 is 20, for k = 3 is 61, for k = 4 is 151, for k = 5 is 332 and for k = 6 is 673. For higher k > 6 the number of existing tilings is still unknown but very high. The current version of this software does not convert the older notation into the new one. The process that we have followed is to find, one by one, the notation that would create each one of

Conclusions and Further Research
As a conclusion, this work presents a method for generating all the regular, uniform and k-uniform (up to at least k = 3) in a consistent, unique and unequivocal manner by means of a new notation applied to a new software (ANTWERP v3.0). Further communications will prove that it is possible to deduct automatically, from our notation, to which group of wallpaper symmetry each tessellation belongs.

Building an Exhaustive Tessellation Database
In further research, we plan to use computing resources to continuously iterate through the permutations of this notation to build an exhaustive database of possible tessellations. This will be done by representing the tessellation notation as a tree data structure, traversing it to find the paths that lead to an infinitely repeating tessellation ( Figure 15) and optimizing by removing paths that lead to invalid tessellations that either do not expand or cause overlaps (Figure 16).  Figure 16. Tree data structure representation of an invalid notation 3-12,6. Invalid due to the angle of the empty space between the hexagon and the dodecagon.
Using this tree data structure approach and a breadth-first-search algorithm, we will also be able to improve on our current findings by identifying the most optimal notations to represent tessellations. For example, 4-3,3,3-4,3/r(c2)/r(h13)/r(h45) which uses 3 transformations, was manually created by us to construct the tessellation, however this algorithmic approach might discover a notation to do it in just 2 transformations. Part of this, will require a method to perform comparisons on generated tessellations (for example, through pattern recognition machine learning [7]) that have been produced with different structures but ultimately lead to the same output ( Figure 17). All these findings can be applied to many fields of engineering where tilings have a major importance in design configurations (mechanical, civil, chemical, etc.). a b Figure 15. Tree data structure representation of the valid notation 3-4-3,3/m30/m(h2).
Symmetry 2021, 13, x FOR PEER REVIEW 13 of 20 Figure 15. Tree data structure representation of the valid notation 3-4-3,3/m30/m(h2). Figure 16. Tree data structure representation of an invalid notation 3-12,6. Invalid due to the angle of the empty space between the hexagon and the dodecagon.
Using this tree data structure approach and a breadth-first-search algorithm, we will also be able to improve on our current findings by identifying the most optimal notations to represent tessellations. For example, 4-3,3,3-4,3/r(c2)/r(h13)/r(h45) which uses 3 transformations, was manually created by us to construct the tessellation, however this algorithmic approach might discover a notation to do it in just 2 transformations. Part of this, will require a method to perform comparisons on generated tessellations (for example, through pattern recognition machine learning [7]) that have been produced with different structures but ultimately lead to the same output ( Figure 17). All these findings can be applied to many fields of engineering where tilings have a major importance in design configurations (mechanical, civil, chemical, etc.). a b Figure 16. Tree data structure representation of an invalid notation 3-12,6. Invalid due to the angle of the empty space between the hexagon and the dodecagon.
Using this tree data structure approach and a breadth-first-search algorithm, we will also be able to improve on our current findings by identifying the most optimal notations to represent tessellations. For example, 4-3,3,3-4,3/r(c2)/r(h13)/r(h45) which uses 3 transformations, was manually created by us to construct the tessellation, however this algorithmic approach might discover a notation to do it in just 2 transformations. Part of this, will require a method to perform comparisons on generated tessellations (for example, through pattern recognition machine learning [7]) that have been produced with different structures but ultimately lead to the same output ( Figure 17).  Figure 16. Tree data structure representation of an invalid notation 3-12,6. Invalid due to the angle of the empty space between the hexagon and the dodecagon.
Using this tree data structure approach and a breadth-first-search algorithm, we will also be able to improve on our current findings by identifying the most optimal notations to represent tessellations. For example, 4-3,3,3-4,3/r(c2)/r(h13)/r(h45) which uses 3 transformations, was manually created by us to construct the tessellation, however this algorithmic approach might discover a notation to do it in just 2 transformations. Part of this, will require a method to perform comparisons on generated tessellations (for example, through pattern recognition machine learning [7]) that have been produced with different structures but ultimately lead to the same output ( Figure 17). All these findings can be applied to many fields of engineering where tilings have a major importance in design configurations (mechanical, civil, chemical, etc.).