# Tiling Constructor, Tile-Dragging Variant

Initializing live version

Requires a Wolfram Notebook System

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

This tool lets you freely create and store any complicated tilings where many other Demonstrations only let you look at them!

[more]

Select a project from the "project" pop-up menu to see some example tilings.

Use the tile types given (62 irreptiles from the Demonstration "Irreptiles" are included here!) or design your own. See the related links for many examples of tilings you can create.

Tilings of irreptiles (tiles that tile themselves) or periodic or aperiodic tilings with fivefold symmetry (which don't follow any grid lines and hence are difficult to draw) are just some of the things you can easily produce with this tool.

The tiles can be "snapped" together as if they were magnetic, making the construction very easy.

You can always go back and edit all vertices, angles, edges, or the size of the tiles at any later time.

Various snap, rotation and mirroring options and many other features like handling clusters of tiles ("components") make construction a breeze.

Examples

The default screen shows a 1x1 square tile. To create a copy of this tile, click "double" or "new".

To move the tile, drag it or use the shift buttons or click the board somewhere.

To create a 2×2 arrangement of four copies of the default 1x1 square, simply click the "o" ("circular arrangement") of the "+/-/o" setter bar, and then click "vertex" (to create a circular arrangement around the red vertex).

Example of cluster handling:

Project 22 (which consists of 567 tiles) was created from project 2 by copying six times the cluster of tiles given by project 2.

[less]

Contributed by: Karl Scherer (December 2010)
Open content licensed under CC BY-NC-SA

## Details

Sample Projects:

Twenty interesting (periodical and aperiodical) tilings are attached (use pop-up menu "project" to see them):

Project 2: a tiling using the "comet" tile Project 3: another tiling using the "comet" tile Project 4: another tiling using the "comet" tile Project 5: a tiling using the "boat" tile Project 6: a tiling using the "36° rhombus" and the "72° rhombus". Project 7: a tiling using the "Penrose kite" and the "Penrose dart". Project 8: stars and hexagons Project 9: an irreptile (a tile that cen be dissected into smaller versions of itself) Project 10: tilings using the "Max" tiles Project 11: a tiling using the s-pentasquare Project 12: another tiling using the s-pentasquare Project 13: a tiling using the "Girih hexagon" and other tiles Project 14: an aperiodic tiling by Roger Penrose Project 15: a tiling using squares and 45° rhombuses Project 16: another tiling with squares and 45° rhombuses Project 17: aperiodic tiling using regular pentagons and 36° rhombuses Project 18: aperiodic tiling using Z-octagons Project 19: aperiodic spiral tiling using C-heptagons Project 20: aperiodic spiral tiling using C-octagons Project 21: another unusual aperiodic tiling based on regular pentagons Project 22: Contains 567 tiles. Created very quickly by using all tiles of project 2 as one single cluster, and then copying this cluster six times. Project 23: Covering the plane with squares and regular triangles. There is a second tiling with this condition. Can you find it? Project 24: exercise: how are the pentagons precisely constructed, considering that one vertex is not on the grid? (use "pc", then "vp")

Which of these sample tilings can it be extended to cover the whole plane?

Controls:

"project" pop-up menu and paging buttons "<,<<,>>,>"

Here you select the project (tiling) you want to see or amend.

"zoom" slider

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

The current project (tiling) can be stored, restored, added as a new project, reset to its default or "deleted" (reduced to a 1x1 square).

There are six cluster-defining options:

Option "comp all" selects all tiles as the component and stores the collection in a special storage. Option "comp tile" selects the current tile as the component and stores it in a special storage. Option "comp +tile" adds one tile to the existing component. Option "comp conn." calculates the current connected component of the tiling and stores it in a special storage. Option "comp color" selects all tiles that have the same color as the current tile and stores the collection in a special storage. Option "comp c c" calculates the current connected component of tiles of the same color and stores the collection in a special storage. Option "comp =

You can shift the marked cluster up, down, left or right immediately, or you can click "add comp" first and then shift the added cluster.

Option "paint comp" paints all tiles in the component with the color of the current tile. If you want to color all tiles with a new color, select one of the colors 1 to 7 first (this will paint the current tile), then use "do paint comp" to recolor the whole component.

Clicking "add comp" adds a copy of the stored cluster of tiles and places it such that the red vertex of the stored component coincides with the red vertex of the current tiling. This makes it very easy to precisely place a component.

Once the cluster has been added, you can shift it to its intended place with the "shift vertex/tile/component/all" pop-up menu.

There is also an option "set opacity", which toggles the opacity between the three values 0, .5 and 1.

Finally "reset view" resets a shifted view (see "shift") to default.

"grid" toggle

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

There are two grids available, an orthogonal (90°) grid and an isometric (60°) grid. Which of those is displayed depends on the snap option selected.

The two snap settings "vertex to ortho grid" and "center to ortho grid" trigger the ortho grid.

The two snap settings "vertex to iso grid" and "center to iso grid" trigger the isometric grid to be displayed. All other snap settings leave the grid type unchanged.

Even when no grid is displayed, the snap options "vertex to ortho grid", "vertex to iso grid", "center to ortho grid", and "center to iso grid" use this grid.

"edges" toggle

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

"O" (show blue origin) toggle

If the "O" toggle is checked, then the origin of the graphics area (point {0,0}) is marked by a blue dot.

"P" (show green pivot) toggle

Next is a button which triggers the display (as a green dot) of the current pivot. The pivot is used to automatically create circular arrangements of tiles (see "set angle/vert/center/O/P" setter bar and actions "p" and "pc" further below).

"C" (show polygon center) toggle

It triggers the display (as a purple dot) of the center of the current polygon.

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

Setter bar "<,>"

Allows you to select the previous or next tile of your project.

Tile type selection

The "type" drop-down 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". This will not affect your creations though.

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

"<", ">" setter bar

Clicking "<" brings up the previous tile type, and ">" brings up the next tile type. Hence these buttons allow you to skim through the available tile types without picking them one by one from the long list of the drop-down 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 "centers" to mark the centers of all tiles with green dots.

Select "comp." to mark the centers of all tiles of the cluster (with a green dot at their centers), if you have defined a cluster beforehand.

With the options in the "snap" drop-down menu you determine how the current tile (the tile with the red edge) is aligned to a grid or to existing tiles. The actual alignment is executed whenever you click the checkbox next to the menu; see its description below.

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.

"snap" toggle

Click the unchecked box next to the "snap" drop-down menu to snap a tile.

There is no automatic snapping in this Demonstration. You have to check the box whenever you want the snap executed for the current tile.

Here you control whether the vertices of the current tile should be marked with black and red dots. The red dot is the "handle" of the current tile. Also, the edge that starts at the red vertex is painted red.

The choices "s", "m", or "l" cause the vertices to be marked by small, medium, or large dots.

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

"//rev/del/h/v" 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.

Click “rev” to reverse the sequence of vertices of the current tile.

Click "del" to 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.

Click "h" to rotate the red edge to a horizontal position.

Click "v" to rotate the red edge to a vertical position.

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 option "mark vertices" is active).

"rot" slider (rotation / angle)

You can set the rotation increment or angle to any value between .1 and 360 degrees.

"rot" angle toggle

Each tile type has several angle values associated with it, which can be called up by clicking the "rot" toggle repeatedly. This saves in many cases the manual input of an angle or rotation value.

"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 "rot" slider. The red edge will be rotated around the red vertex in the process.

Click "vert" (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).

Click "P" to rotate the current tile by the set rotation increment around the green pivot (which at the start is at the origin and can be set by the action button "p" to any other position).

"+/-/o" setter bar

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

If "o" is selected, this triggers the powerful "create a ring of tiles" feature for the "vertex/center/O/P" 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 around one vertex or around the origin with one click of the "vertex" button.

"size" slider

Here you set a value between 0.01 and 10. The value will be used by the buttons of the following setter bars.

Here you select from several special values for the "size" slider. Among others, the golden ratio and several square roots are provided. You can also multiply the size by certain fixed values.

You can also store and restore the current slider value, and measure the length of the current (red) edge.

Finally, option "add edge" adds the length of the current edge to the current "size" slider value. The polygon stays unchanged.

"=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 current vertex will stay put. Clicking button "*th" stretches the current tile horizontally. The center of the tile will stay put. Clicking button "*tv" stretches the current tile vertically. The center of the tile will stay put. Clicking button "*" resizes the whole tiling, with the center of the board (the origin) being the fixpoint.

"shift" setter bar

Click one of the buttons to shift the current tile (or view or component or project) to the north, south, west, or east. The amount of shifting is given by the "size" slider. On the isometric grid up and down shifts are done in grid steps ("size 1" => shift = sqrt[3]/2).

During "reposition v" mode (i.e. repositioning of the red vertex) clicking the buttons will shift the red vertex instead.

"view/vertex/tile/component/project" setter bar

Select "vertex" to make the buttons in the "shift" setter bar apply to the current vertex. Select "tile" to make the buttons in the "shift" setter bar apply to the current tile.

Select "comp." to make the buttons in the "shift" setter bar apply to the current component. Select "project" to make the buttons in the "shift" setter bar apply to all tiles simultaneously.

Note that the amount of shifting is controlled by the "shift" slider and the "set size" pop-up menu (see above).

Color swatches

There are eight color selectors. Click the colored squares to pick new colors.

"col" color application setter bar

Click one of the eight buttons "1" to "8" to color the current tile with one of the eight colors.

On the left (in brackets) the color number of the current tile is displayed.

"reposition v" toggle

While "reposition v" (repositioning of the red vertex) is active, you can change the position of the red vertex.

You can select any vertex to be the red vertex by cycling through the vertices by clicking "" or "" of the "//rev/del/h/v" setter bar.

You can also delete a vertex (click the "delete" button), add a vertex (button "v+"), apply a color, or create a copy of the tile (button "double") while you are in repositioning mode. When you click button "v+", a new vertex will be inserted at the center of the red edge.

During repositioning mode, clicking one of the "shift" buttons will only shift the red vertex, not the whole tile.

Note that most other options are unavailable while in repositioning mode (such as save/restore). Also, all action, align, mirror, and delete options are inactive (apart from action buttons "v+", "double" and "new").

Once you are finished redesigning your tile, click the toggle again to go back to tile-dragging mode.

"rnd/new/=" setter bar

Click button "rnd" to randomly color all tiles with one of these eight colors.

Click button "new" to create a new set of eight random colors.

Click button "=" to color all tiles of the same tile type (as the current tile) with the color of the current tile.

Background color

In the same row there is a color swatch for the background color. Click it to change the background color.

"action" setter bars

Click "v+" to create an additional vertex between the red vertex and the vertex following it.

Click "vp" to move the red vertex to the current position of the green pivot.

Click "p" (pivot) to set the green pivot point (used for rotations) to the current position of the red vertex.

Click "pc" (pivot at center) to set the green pivot point (used for rotations) to the center of the current tile.

Action "dble" (double): a copy of the current tile is placed on the board at the current position.

Action "new" creates a new copy of the currently selected tile type. If you haven't altered the previous tile, "new" has the same effect as clicking "dble".

Action "join": joins two tiles that have an edge in common (if that edge is marked red).

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

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

Action "⟹": make the next tile the current one.

Action "find n'bor": this action finds the closest neighbor, that is, it 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 ortho grid", "vertex to iso grid", "edge to edge", 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 center.

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.

"align" setter bars

Button "hor" (align horizontal): rotates the current tile such that the red edge is horizontal.

Button "ver" (align vertical): rotates the current tile such that the red edge is vertical.

Button "v-c hor" rotates the current tile such that the (imaginary) line through the red vertex and the center of the tile is horizontal.

Button "v-c ver" rotates the current tile such that the (imaginary) line through the red vertex and the center of the tile is vertical.

Select "horiz. (vertex)" to mirror the current tile at an imaginary horizontal line through the red vertex.

Select "horiz. (vertex)" to mirror the current tile at an imaginary horizontal line through the center of the tile.

Select "horiz. (origin)" to mirror the current tile at an imaginary horizontal line through the origin.

Select "horiz. (pivot)" to mirror the current tile at an imaginary horizontal line through the (green) pivot.

Select "vertic. (vertex)" to mirror the current tile at an imaginary vertical line through the red vertex.

Select "vertic. (center)" to mirror the current tile at an imaginary vertical line through the center of the tile.

Select "vertic. (origin)" to mirror the current tile at an imaginary vertical line through the origin.

Select "vertic. (pivot)" to mirror the current tile at an imaginary vertical line through the pivot.

Select "at edge" to mirror 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.

Select "at vertex" to rotate the tile by 180° around the red vertex.

Select "at center" to rotate the tile by 180° around the tile center.

Select "at origin" to rotate the tile by 180° around the origin.

Note: if you want to keep the unmirrored tile, click "double" first.

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

Select "all at origin (1)" to mirror all tiles at the origin.

Click "all at origin (2)" to create additional copies of all existing tiles and mirror them 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 (2)".

Similarly: options "all at pivot(1)" and "all at pivot(2)".

"delete" setter bar

You can delete the current tile (button "current"), the first tile (button "first"), the last tile (button "last"), or all tiles having a sequence number lower ("<") or higher (">") than the current tile. You cannot delete the last remaining tile.

Hints

Create a new tile by clicking "dble" or "new".

Remember that only executing the "snap" function guarantees precise positioning of your tiles. There is no automatic snap in this Demonstration. To execute a snap, click the checkbox next to the "snap" pop-up menu.

The handle of a tile is always a vertex, not the center of the tile.

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) 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, take a triangular tile and move its vertices such that the triangle contains the angle you want to measure (using the "reposition v" feature). The angle at the red vertex of the triangle will be shown at the left border.

How to start a tiling (example):

Select the tile type you want, say a pentagon. The default tile (square) will turn into a pentagon. Set snap to "edge to edge". To add similar tiles, click "double", then drag the current (marked) tile to where you want it. Make use of "" (= "next vertex") to make the right edges snap together. Click the checkbox next to the "snap" drop-down menu to join the tiles together.

How to keep part of an existing tiling and delete everything else:

First make sure the part you want to keep is disjoint from the rest. To accomplish this, you might have to delete a few tiles surrounding your part of interest (make tile numbers visible, select the tile numbers from the tile menu and click "delete current" for each one). Once your part is disjoint, click "do" and select option "comp conn" (connected component). Delete your project with "do: delete project", which will leave a square only. Restore the component by clicking "do", then "add comp", then delete the surplus little square.

How to simultaneously shift all tiles that are yellow:

In the "tile" pop-up menu, select the tile number of a yellow tile. No click "do" and select "comp color". No look at the pop-up menu next to the "shift" slider and select "comp". Now if you click one of the four the buttons of the "shift" setter bar, all yellow tiles will be shifted at the same time.

Challenges

Challenge 1: Try to extend any of the given tilings such that it covers the whole plane. Also, can you extend tiling 2 to a tiling with six-fold symmetry?

Challenge 2: 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 3: Recreate any tiling shown in the Demonstration "Irreptiles".

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 with the Tile Constructor.

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

Set the "rot" 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 "double" to duplicate the triangle, click "-" of the "+/-/o" setter bar. Then click "vertex" to rotate the new triangle clockwise by 36° around the red vertex. You now see the shape of the Penrose kite, but it still consists of two triangles.

Click action "v+" to add a vertex, then click "" in the "//rev/delete" setter bar to select the next vertex. Check the "reposition v" toggle, move the vertex close to the top vertex, click the "snap" checkbox, then unselect the "reposition v".

Delete the surplus triangle by clicking the "<" button of the "delete" setter bar.

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 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 implemented in this Demonstration only for the tile set "rhombus and diamond". Project 14 shows how the matching rule (additional lines on adjacent tiles have to match) enforces aperiodicity (using the given tiles "marked rhombus" and "marked diamond").

The (diamond (36° rhombus), the regular pentagon, the Penrose boat, and the 5-star together tile the plane aperiodically. All four tiles are tile types in this Demonstration.

The Penrose kite together with the Penrose dart tile the plane aperiodically (if certain additional matching rules apply). You will find both as tile types in this Demonstration.

Girih tiles

The set of five "Girih" tiles has been used a lot in oriental tilings. They are the regular decagon, the regular pentagon, the 72° rhombus, and the two tiles called here "Girih bowtie" and "Girih hexagon".

## Permanent Citation

Karl Scherer

 Feedback (field required) Email (field required) Name Occupation Organization Note: Your message & contact information may be shared with the author of any specific Demonstration for which you give feedback. Send