# Wolfram Function Repository

Instant-use add-on functions for the Wolfram Language

Function Repository Resource:

Generate the hexagonal tiling pattern of the spectre and its supertile

Contributed by:
Bowen Ping

ResourceFunction["SpectreHexagonalTiling"][ plots the spectre tiling initial conditions for integer | |

ResourceFunction["SpectreHexagonalTiling"][ plots the spectre tiling with | |

ResourceFunction["SpectreHexagonalTiling"][ plots the combinatorial tiling of the given | |

ResourceFunction["SpectreHexagonalTiling"][ plots the combinatorial tilings of all types in the |

This combinatorial equivalence is proven in “A Chiral Aperiodic Monotile”. The tiles are the same as shown in Figure 4.1, Figure 4.2 and Figure 5.3.

This function uses combinatorial hexagons to generate tilings depending on a built-in function SatisfiabilityInstances.

Supported tiling types include the following:

"Hexagon" | combinatorial hexagons |

"Spectre" | the Spectre tiles |

"Cluster" | 1-level supertiles of the Spectre |

"n-Supertile" | n-level supertiles of the Spectre |

HatHexagonalTiling has the same options as Graphics, with the following additions:

ColorFunction | Automatic | function with inputs from 1 to 9, gives colors as output. |

ColorRules | Automatic | list of rules from integers (from 1 to 9) to colors. |

"Count" | 1 | required number of possible tilings. |

The setting "Count"→All generates all possible tilings.

EdgeShapeFunction is used to change the shape of the tiles.

Depict a Mystic tile and a Spectre tile:

In[1]:= |

Out[1]= |

Generate a tiling made of Mystic and Spectre tiles:

In[2]:= |

Out[2]= |

Plot the tilings of combinatorial hexagons, the Spectre tiles and supertiles:

In[3]:= |

Out[3]= |

Make a curved spectre tiling:

In[4]:= |

Out[4]= |

There are 9 different initial conditions, corresponding to 9 kinds of hexagons:

In[5]:= |

Out[5]= |

Curve the spectre tiles and supertiles:

In[6]:= |

Out[6]= |

Any higher-level supertiles are available:

In[7]:= |

Out[7]= |

Use "Count" to give more possible tilings:

In[8]:= |

Out[8]= |

Generate all valid one layer surroundings:

In[9]:= |

Out[9]= |

Color the tiling using GrayLevel:

In[10]:= |

Out[10]= |

Add blue EdgeForm in a tiling:

In[11]:= |

Out[11]= |

The same style can be set by ColorFunction:

In[12]:= |

Out[12]= |

Set EdgeShapeFunction to be Automatic to plot curved tilings:

In[13]:= |

Out[13]= |

Plot the curved Spectre tiling with different edges function:

In[14]:= |

Out[14]= |

The function uses interpolation to make curved boundary. Interpolation options can be set manually:

In[15]:= |

Out[15]= |

It is faster to use a list of types than to map over a list:

In[16]:= |

Out[16]= |

In[17]:= |

Out[17]= |

They give exactly the same result, even if the option "Count" is not 1.

In[18]:= |

Out[18]= |

EdgeShapeFunction doesn’t work on hexagons:

In[19]:= |

Out[19]= |

The EdgeShapeFunction should be continuous from 0 to 1, and equal to zero at both 0 and 1. Otherwise, the shape would collapse. Also, if the value of the function increase to a large value, it may cause self-intersection:

In[20]:= |

Out[20]= |

Plot a large patch of spectre tiling, coloring Mystic purple and one of its neighboring tiles green:

In[21]:= |

Out[21]= |

Wolfram Language 13.0 (December 2021) or above

- 1.0.0 – 08 May 2024

This work is licensed under a Creative Commons Attribution 4.0 International License