# Tiling Constructor

Requires a Wolfram Notebook System

Interact on desktop, mobile and cloud with the free Wolfram CDF Player or other Wolfram Language products.

Requires a Wolfram Notebook System

Edit on desktop, mobile and cloud with any Wolfram Language product.

This Demonstration lets you freely create any complicated tiling—many other Demonstrations only let you look at them!

[more]
Contributed by: Karl Scherer (November 2010)

Open content licensed under CC BY-NC-SA

## Snapshots

## Details

"plot range" slider

Move the slider to the right or left to zoom out or in.

"opacity" slider

Move the slider to change the opacity of the tiles.

"grid" toggle and edge toggle

If the first toggle is checked, an grid of gray dots is displayed. The incremental distance between dots is 1.

Even when it is not displayed, the "snap" option "vertex to 90° grid" uses this grid.

Click to second toggle to hide/show the edges of your tiles.

Tile number popup menu

Select a sequence number to make another tile the current one. The current tile will have the vertices marked by black and red dots.

Tile type selection

The "type" popup menu lets you select the type of tile you want to create (like "regular triangle", "square", etc.).

All 62 irreptiles from the Demonstration “Irreptiles” are included here! Have a look at it to learn how these tiles tile themselves.

While the tile type is stored with each created tile, after editing the tile the displayed type text might not describe the actual tile anymore. For example, if you delete a vertex from a square, the tile is a triangle, but the stored type text will still say "square".

Depending on the selected tile type, the system suggests a rotation amount (see "rotation", below). For squares the rotation is set to 45°, for hexagons to 30°, for regular pentagons to 36°, and for regular octagons to 22.5°.

nr/n2/vx/v2/ce popup menu Select "nr" to display the sequence numbers of the tiles in small format. Select "n2" to display the sequence numbers of the tiles in larger format. Select "vx" to display the number of vertices of each tile in small format. Select "v2" to display the number of vertices of each tile in larger format. Select "ce" to mark the centers of the tiles.

Define your own tiles (with ”start”/boardclicks/”end” or simply by clicking ”save” at any time)

There are five reserved types (called "your tile 1", …, "your tile 5") that you can define yourself. By default these tiles are squares, but once you click the "start" button of the "define" setter bar, you can click any position on the board to create the vertices of your own tile.

Create at least three vertices, otherwise your input will be ignored.

Click the "end" button when you are finished creating vertices for your new tile.

The "snap" option can be changed for each vertex created. All other options are unavailable during this vertex-defining phase.

There is also a "save" button. This is available at any time. It lets you save the current polygon as one of your own tile designs (called "your tile 1", …, "your tile 5"). If none of those "your tiles" was selected, the current tile will be stored as "your tile 1".

Store and restore with ”s all” and ”r all”, show sample projects

Clicking these options will save / restore the assembly of tiles. Use the save option often to have a backup!

Click "r all" repeatedly to see 4 sample projects which have been created with this Demonstration. Click a fifth time to have your current project reappear.

"snap" popup menu

With the options in the "snap" popup menu you determine how the current tile (the tile with the red edge) is aligned to a grid or to existing tiles. The repositioning is executed when you click the board (note that this is different from the handling of snaps in the demonstration “Tiling Constructor, Tile Dragging Variant”!).

Option "vertex to ortho grid" snaps the red vertex to the orthogonal grid.

Option "vertex to iso grid" snaps the red vertex to the closest point of the isometric grid.

Option "vertex to vertex" snaps the red vertex to the closest vertex of any other tile.

Option "edge to edge" snaps to the nearest vertex, and also rotates the tile to an existing edge. The rotation uses the red vertex as a pivot and rotates the red edge to the edge of the other tile that is at rest. Sometimes the tile needs a further rotation by 180 degrees around the current vertex.

This "edge to edge" snap helps you to neatly join a tile to an existing configuration. It helps to first select the best-fitting red vertex with "next". If you imagine that the current tile is shifted to its target, the red edge should not point into the interior of the second tile that you want to join to.

However, even then this feature does not always work as intended. If the edges are not joined after the move, clicking the red vertex often joins them. Sometimes additional rotation of the current tile around the red vertex might be necessary (set snap to "vertex to vertex" for this).

Option "vertex to center" snaps the red vertex to the nearest center of a tile.

Option "center to center" snaps the center of the current tile to the nearest center of a tile.

Option "center to o. grid" snaps the center of the current tile to the closest point of the orthogonal grid.

Option "center to i. grid" snaps the center of the current tile to the closest point of the isometric grid.

Option "center to vertex" snaps the center of the current tile to the nearest vertex of any another tile.

Option "center to origin": snap the center of the current tile to the origin (0,0).

"mark v" setter bar

The "mark v" (mark vertices) setter bar buttons mark the vertices of the current tile (with black and red dots), the origin (0,0) with a blue dot and the pivot (see "actions") with a green dot.

The red dot is the "handle" of the current tile. Also, the edge that starts at the red vertex is painted red.

Clicking the button "s","m", or "l" causes the markings to be small, medium, or large dots.

For practical reasons, the marking of the vertices is switched on automatically when you click certain buttons.

"//rev/del" setter bar

Clicking "" causes the next vertex and edge of the current tile to turn red and be the new handle of the current tile. Markers will be made visible if they were switched off.

Clicking "←” causes the previous vertex of the current tile to turn red. Markers will be made visible if they were switched off.

Clicking “rev” will reverse the sequence of vertices of the current tile.

Clicking "del" will delete the vertex marked by the red dot. If no markers were visible, the option "mark vertices" will be switched on automatically. "delete" has no effect if only three vertices are left.

Vertex sequence number, position, angle

The next line on the left border shows the sequence number and position of the red vertex and the angle between the tile's two edges meeting at this point.

"angle at red vertex"

You are shown the angle at the vertex that is colored red (if the option "mark vertices" is active).

"rotate" slider

You can set the rotation increment to any value between 0 and 360 degrees.

"set angle / vert / center / O / P" setter bar

Clicking "set angle" will set the angle at the red vertex to the value given by the "rotate" slider. The red edge will be rotated around the red vertex in the process.

Click "vertex" to rotate the current tile by the set rotation increment around the red vertex.

Click "center" to rotate the current tile by the set rotation increment around the center of the tile.

Click "O" to rotate the current tile by the set rotation increment around the origin (which is at the center of the graphics area).

Powerful "create a ring of tiles" feature:

If "O" is selected in the following "+/-/o" setter bar, then clicking one of the "vertex", "center" or "O" buttons creates a ring of copies of tiles circling the current red vertex or center (of the current tile) or the origin (center of the board).

The number of copies in this ring is the integer that is 360/ or less, where is the angle set by the "rotate" slider. Hence to create a ring of five regularly spaced copies, set to 72°.

Similarly, option "P" creates a ring of tiles around a stored pivot point (which is at the origin at the start, but can be set by the "action" button "p" to any other position, see below).

"+/-/o" setter bar

This setter bar lets you select whether the rotations (angle/vertex/center) just described are counterclockwise ("+") or clockwise ("-").

If "o" is selected, this triggers the powerful "create a ring of tiles" feature for the "vertex", "center" and "O" buttons, see above. This "create a ring of tiles" feature often dramatically simplifies the creation of mosaics. In the kites/darts mosaic, for example, you can create circular formations of five darts or five kites with one click of the "vertex" button (first make sure that the correct vertex is highlighted).

"size" slider

Here you set a value between 0.01 and 10. The value will be used by the buttons of the following setter bar. You can store and restore the value of the resize slider (see below).

"set size" popup menu

Here you select from several special values for the "size" slider. Among others, the golden ratio and several square roots are provided.

There are also options to store and restore the value of the resize slider, and to measure the length of the red edge.

"=e/*e/=t/*t/*th/*tv/*" setter bar

Clicking button "=e" will modify the current tile such that the length of the red edge is equal to the value of the "resize" slider. The red vertex will stay put.

Clicking button "*e" will modify the current tile such that the length of the red edge is equal to its old length multiplied by the value of the "resize" slider. The red vertex will stay put.

Clicking button "=t" changes the size of the current tile such that the current (red) edge has the length given by the "resize" slider. The current vertex will stay put.

Clicking button “*t” changes the size of the current tile by the factor given by the “resize” slider. The red vertex will stay put.

Clicking button "*th" stretches the current tile horizontally. The red vertex will stay put.

Clicking button "*tv" stretches the current tile vertically. The red vertex will stay put.

Clicking button "*" resizes the whole tiling. The red vertex will stay put.

”shift” setter bar and “tile”/”all” buttons

Use the shift buttons to shift the current tile / all tiles up, down, left or right. The size of the shift is given by the “size” slider.

Colors

There are three color selectors. Click the colored squares to pick new colors. The first color is the default color used for newly created tiles.

"apply" setter bar and background color selection

By clicking one of the three buttons "1", "2", or "3" of the "apply" setter bar, you color the current tile with one of the three colors.

Click the button "r" to randomly color all tiles with those colors which are used already in the tiling.

Click the button "=" to paint all tiles having the current tile type with the color of the current tile.

Click the fourth color swatch to change the background color.

"action" setter bars

Action = "v": if "v" is active, clicking the graphics area creates a new position for the red vertex. If the new position is equal to the position of the next or previous vertex in the polygon, then this vertex will be eliminated.

Action = "v+": if "v+" is active, clicking the graphics area creates an additional vertex between the red vertex and the one following it.

Action = "p": set the pivot (which by default is at the origin) to the position of the red vertex. The pivot is marked by a green dot.

Action = "new": creates a new tile with every board click.

Action = "shift": There is no dragging in this Demonstration! Click the target position to shift the current tile to a new position.

Action = "copy" (copy and paste): with each mouse click on the board, the current tile is copied to the clicked board position. Note that if a "snap" is selected, this helps to join the new tiles to existing ones.

Action = "to top": renumbers the tiles such that the current one is the last in the sequence and hence is displayed on top of any other tile (if they overlap).

Action = "": makes the previous tile the current one.

Action="": makes the next tile the current one.

Action = "find": immediately finds the tile that is "snap-closest" to the current tile and makes this the new current tile. Here the snap-closest tile is the closest tile with regard to the setting chosen for the snap function:

If nothing ("-") or "vertex to grid" or "vertex to vertex" has been selected for snap, then the new current tile is the one that has a vertex closest to the current red vertex.

If "vertex to center" has been selected for snap, then the new current tile is the one that has its center closest to the current red vertex.

If "center to center" has been selected for snap, then the new current tile is the one that has its center closest to the current red vertex.

If "center to vertex" has been selected for snap, then the new current tile is the one that has a vertex closest to the center of the current tile.

Action = "join": if two tiles have an edge in common, you can click "join" to create one new, bigger tile.

"align" setter bar

Clicking button "hor" causes the tile to rotate such that the edge next to the red vertex is horizontal.

Clicking button "ver" causes the tile to rotate such that the edge next to the red vertex is vertical.

Clicking button "v-c hor" causes the tile to rotate such that the line from the red vertex to the center is horizontal.

Clicking button "v-c ver" causes the tile to rotate such that the line from the red vertex to the center is vertical.

"mirror" popup menu

Selecting "horiz. (vertex)" mirrors the current tile at an imaginary horizontal line through the red vertex.

Selecting "horiz. (center)" mirrors the current tile at an imaginary horizontal line through the center of the tile.

Selecting "horiz. (origin)" mirrors the current tile at an imaginary horizontal line through the origin.

Selecting "horiz. (pivot)" mirrors the current tile at an imaginary horizontal line through the pivot.

Selecting "vertic. (vertex)" mirrors the current tile at an imaginary vertical line through the red vertex.

Selecting "vertic. (center)" mirrors the current tile at an imaginary vertical line through the center of the tile.

Selecting "vertic. (origin)" mirrors the current tile at an imaginary vertical line through the origin.

Selecting "vertic. (pivot)" mirrors the current tile at an imaginary vertical line through the pivot.

Selecting "at edge" mirrors the current tile at the red edge.

Selecting "perpend. to edge" mirrors the current tile at the (imaginary) line through the red vertex and perpendicular to the red edge.

Selecting "at vertex" rotates the tile by 180° around the red vertex.

Selecting "at center" rotates the tile by 180° around the tile center.

Selecting "at origin" rotates the tile by 180° around the origin.

Selecting "at pivot" rotates the tile by 180° around the pivot.

Note: if you want to keep the unmirrored tile, click the "copy" button and then the red vertex first.

Also note that if the sequence of vertices was clockwise, then the new tile has its vertices ordered counterclockwise.

Selecting "all at origin" is a powerful feature that works somewhat differently than the other mirror options:

The system makes copies of all existing tiles and mirrors the copies at the origin. This way you only have to create half of a point-symmetric tiling before you create the second half with "all at origin".

"delete" setter bar

You can delete the current tile, the first tile, the last tile, or all tiles having a sequence number lower or higher than the current tile. You cannot delete the last remaining tile.

Hints

There is no tile dragging in this Demonstration. All construction work is done by clicking the graphics area.

Given tile type "36° rhombus" (called a "diamond") tiles the plane together with regular pentagons.

This 36° rhombus together with tile type "72° rhombus" is used in some of the famous aperiodic Penrose tilings.

How to measure an angle:

If the angle is part of a tile, make the tile the current one (by selecting the tile's number in the tile selection tool) and then move the red vertex to the angle by clicking "" repeatedly. The angle will be shown at the left border. If the angle you want to measure is not part of a tile, but is defined by vertices of two or three tiles, create a triangular tile with the "start" and "end" buttons. The angle at the red vertex of the triangle is then shown at the left border.

How to start a tiling (example):

Select "snap to grid", select the tile type you want, then click the board center. Delete the default square tile by clicking the "first" button of the "delete" setter bar.

Set snap to "edge to edge". To add similar tiles, click "copy”, then click a vertex. Make use of "" (= "next vertex") to make the right edges snap together.

Challenges

Challenge 1: Find a convex area that can be tiled by 36° rhombus tiles and regular pentagons. You must use at least one of each type. How many different tilings can you find?

Challenge 2: The tile "Ammann chair" (also called "the Golden Bee") can be dissected into two smaller copies of itself (of different sizes). The tile is given in the tile type list of this Demonstration. Using the "set size" option "square root of golden ratio" it is easy to show this dissection, since the two copies differ in size by the square root of the golden ratio.

How to make the Penrose kite from scratch

The Penrose kite is given as one of the tile types, but in the following we show how you can easily construct it from scratch from a regular triangle.

Select snap option "-". Select "regular triangle" from the tile types. Select the action "new" and click the graphics area. A regular triangle with side lengths of 1 unit will appear. You may choose to double its size by setting the "resize" slider to 2 (which is the default) and clicking the "*t" button.

Set the "rotate" slider to 36° and click "set angle". This will result in an isosceles triangle with angles 36°, 72°, and 72°. The Penrose kite consists of two such triangles joined side by side.

Click the "copy" button, then the red vertex to duplicate the triangle, then click "vert" to rotate the new triangle by 36° around the red vertex (or select “mirror at edge”). You now see the shape of the Penrose kite, but it still consists of two triangles.

In the line "mark v", click the left arrow "←" to select the common edge and click "join". Now click "save". The Penrose kite is now stored as tile type "your tile 1".

To store it under "your tile 2" you have to select this tile type first. You can also create your own tile types by using "start", then clicking the board to define the vertices, then clicking "end".

Some information on aperiodic Penrose tilings

Search the internet for "Penrose tiling" to find out about aperiodic tilings. There is too much material to review it all here.

Here are a few remarks:

To enforce that a tiling is aperiodic, certain matching rules are required (realized often by curved lines on the tiles or additional notches at the edges). These matching rules are not implemented in this Demonstration.

As mentioned above, the 36° rhombus together with the 72° rhombus (available tile types) tile the plane aperiodically.

The 36° rhombus, the regular pentagon, the Penrose boat, and the 5-star together tile the plane aperiodically. You will find all four tiles as tile types in this Demonstration.

The Penrose kite together with the Penrose dart tile the plane aperiodically. You will find both as tile types in this Demonstration.

## Permanent Citation