Wolfram Demonstrations Project
7922

Tiling Constructor, Tile-Dragging Variant

This tool lets you freely create any complicated tilings where many other Demonstrations only let you look at them!
Unlike in the original "Tiling Constructor" Demonstration, here you can drag all tiles (but you can restrict the dragging to the currently highlighted tile by clicking "freeze").
Additionally, several features (such as mirroring) are more powerful in this version.
Use the tile types given (all 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 are just some of the things you can produce with this tiling constructor Demonstration.
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 and rotation options and many other features make construction a breeze.
Examples
The default screen shows a 1x1 square. To create a copy of this square somewhere else, click "double", then either drag the new tile or click the board to shift the new 1x1 square to any place on the board.
To create a 2×2 arrangement of four copies of the default 1x1 square, select rotate = 90°, click the "o" ("circular arrangement") of the "+/-/o" setter bar, and finally click "vertex" (to create a circular arrangement).
More examples are given at the end of Details.
All tilings shown in the snapshots (Penrose tilings) of the original Demonstration "Tiling Constructor" can be created (even faster) with this tile-dragging variant Demonstration.

THINGS TO TRY

SNAPSHOTS

  • [Snapshot]
  • [Snapshot]
  • [Snapshot]

DETAILS

"plot range" slider
Move the slider to the right to zoom out, to the left to zoom in.
"opacity" slider
Move the slider to change the opacity of the tiles.
"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 to this toggle 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 / vertex/ center / O / P" setter bar and "actions" further below).
Tile number drop-down menu
Select a sequence number to make another tile the current one. The current one will have the vertices marked by black and red dots.
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.
nr/n2/vx/v2/ce 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 "ce" to mark the centers of all tiles with green dots.
"snap" drop-down menu
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.
"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 red dot is the "handle" of the current tile. Also, the edge that starts at the red vertex is painted red.
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 of this demonstration.
"//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 option "mark vertices" is active).
Rotation ("rot" slider)
You can set the rotation increment to any value between 0 and 360 degrees.
"set angle / vertex / 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 "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.
"set size" drop-down menu
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.
"=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 to the north, south, west, or east. The amount of shifting is given by the "size" slider.
During "reposition v" mode (i.e. repositioning of the red vertex) clicking the buttons will shift the red vertex instead.
"tile/all" setter bar
After clicking "all", the buttons in the "shift" setter bar apply to all tiles, hence the whole tiling will then be shifted by the shift buttons.
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
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 button "r" to randomly color all tiles.
Click button "=" to color all tiles with the color of the current tile.
Click button "b" to color the background with color "1".
Background color
In the same row there is a fourth color selector. Click it to change the background colour.
"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 "//delete" 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 store/restore and freeze/unfreeze). Also, all action, align, mirror, and delete options are inactive (apart from action buttons "v+" and "double").
Once you are finished redesigning your tile, click the toggle again to go back to tile-dragging mode.
"save/rest./freeze" setter bar
Click "save" to save the current tiling. The system also remembers whether you are in frozen or unfrozen mode.
Click "rest." to restore the saved tiling and the stored freeze mode.
In the default (unfrozen) mode you can drag any tile to a new position. Click "freeze" to freeze the positions of all tiles except the marked tile (i.e. the one with a red edge and vertex). This is very useful when you create a tiling piece by piece and do not want to move around tiles that have been placed properly already. Once you have clicked the "freeze" button, its button label will turn into "unfreeze". Click the button again to go back to the unfrozen mode. Note that most controls will not work during freeze mode.
"action" setter bars
Click "v+" to create an additional vertex between the red vertex and the vertex following it.
Click "p" to set the (green) pivot point to the current position of the red vertex.
Action "new": replaces the current tile by a standard default tile of a type that is currently showing at the "tile type" drop-down menu.
Action "double": a copy of the current tile is placed on the board at the current position.
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.
"mirror" drop-down menu
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.
Selec "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.
Selecting "all at origin (2)" 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 (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
Always remember that only executing the "snap" function guarantees precise positioning of your tiles.
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 drag a new double:
When you make a copy of a tile using the action "double", the new tile will be highlighted (by a red vertex), but the old tile will be the one that is moved when you drag the clicked cursor. To drag the new tile instead, click the action button "freeze" first, which blocks the movements of all tiles except the highlighted one.
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 = 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 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 not implemented in this Demonstration.
As mentioned above, the 36° rhombus (tile type 13) together with the 72° rhombus (tile type 14) tile the plane aperiodically.
The 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.








 
RELATED RESOURCES
Mathematica »
The #1 tool for creating Demonstrations
and anything technical.
Wolfram|Alpha »
Explore anything with the first
computational knowledge engine.
MathWorld »
The web's most extensive
mathematics resource.
Course Assistant Apps »
An app for every course—
right in the palm of your hand.
Wolfram Blog »
Read our views on math,
science, and technology.
Computable Document Format »
The format that makes Demonstrations
(and any information) easy to share and interact with.
STEM Initiative »
Programs & resources for
educators, schools & students.
Computerbasedmath.org »
Join the initiative for modernizing
math education.
Powered by Wolfram Mathematica © 2012 Wolfram Demonstrations Project & Contributors  |  Terms of Use  |  Privacy Policy  |  RSS Give us your feedback
Note: To run this Demonstration you need Mathematica 7+ or the free Mathematica Player 7EX
Download or upgrade to Mathematica Player 7EX
I already have Mathematica Player or Mathematica 7+