Introduction: Tessellating Lizards!
tes·sel·late [v. tes-uh-leyt; adj. tes-uh-lit, -leyt] verb, tes·sel·lat·ed, tes·sel·lat·ing, adjective
verb (used with object)
1. to form of small squares or blocks, as floors or pavements; form or arrange in a checkered or mosaic pattern.
Source: Dictionary.com Unabridged
Our goal for this Indestructibles project was to create approximations of M.C. Escher’s tessellating lizards using a laser cutter. While working on this project, we learned about the math behind shapes that interlock, how to programmatically create SVG (Scalable Vector Graphic) files and a few new tricks on the TechShop laser cutters.
verb (used with object)
1. to form of small squares or blocks, as floors or pavements; form or arrange in a checkered or mosaic pattern.
Source: Dictionary.com Unabridged
Our goal for this Indestructibles project was to create approximations of M.C. Escher’s tessellating lizards using a laser cutter. While working on this project, we learned about the math behind shapes that interlock, how to programmatically create SVG (Scalable Vector Graphic) files and a few new tricks on the TechShop laser cutters.
Step 1: Get Inspired!
There are many Web sites dedicated to the amazing work of M.C. Escher. We particularly liked the image above from the following site:
http://euler.slu.edu/escher/index.php/File:Regular-division-25.jpg
http://euler.slu.edu/escher/index.php/File:Regular-division-25.jpg
Step 2: Getting the Rough Shape of the Lizard
We identified the X,Y coordinates of 50 vertices for a single lizard using Microsoft Paint and imported those coordinates into Matlab. It’s important (and interesting) to note that three of these vertices are special in that they form an equilateral triangle critical to the symmetry of Escher’s overall design.
Step 3: Correcting the Vertices
If Escher’s lizard was perfectly symmetric and we had traced it perfectly, we would be almost done. It turned out that some adjustments were required.
We first adjusted vertices 8, 26 and 42 to ensure that they do form an equilateral triangle. We then created three additional copies of the lizard in Matlab to check how well the pieces would interlock.
You can see that the edges don’t quite fit. No problem… We adjusted the coordinates of the black lizard’s left cheek and left shoulder, for example, to exactly match the green lizard’s face. As long as one carefully keeps track of which vertices are moved, these adjustments lead to lizards that will perfectly interlock.
We first adjusted vertices 8, 26 and 42 to ensure that they do form an equilateral triangle. We then created three additional copies of the lizard in Matlab to check how well the pieces would interlock.
You can see that the edges don’t quite fit. No problem… We adjusted the coordinates of the black lizard’s left cheek and left shoulder, for example, to exactly match the green lizard’s face. As long as one carefully keeps track of which vertices are moved, these adjustments lead to lizards that will perfectly interlock.
Step 4: Trimming the Lizard
Now that we had the shape of the lizard correct, we wanted to move the vertices “inward” a bit to create a small gap between lizards. This small gap will ensure that one lizard isn’t hit when the lizard next to it is cut by the laser and will allow for a small amount of warp-age in the material that will be cut.
Step 5: Creating the SVG File
Now that the lizard shape had been adjusted and trimmed mathematically, it was time to build the SVG file. Thankfully, a basic SVG file is text based and is relatively simple to create in Matlab or any other programming language.
Our Matlab script created an SVG file with three sets of three interlocking lizards. The image above shows the resulting SVG file loaded into Inkscape.
You may notice that the lizards are mirror images of the ones we started with. This is due to a difference in how Matlab and SVG understand Y coordinates: Matlab places Y = 0 at the bottom of the page while SVG places it at the top of the page. No worries… We can simply flip the pieces over once we’ve cut them!
Now off to the laser cutter!
Our Matlab script created an SVG file with three sets of three interlocking lizards. The image above shows the resulting SVG file loaded into Inkscape.
You may notice that the lizards are mirror images of the ones we started with. This is due to a difference in how Matlab and SVG understand Y coordinates: Matlab places Y = 0 at the bottom of the page while SVG places it at the top of the page. No worries… We can simply flip the pieces over once we’ve cut them!
Now off to the laser cutter!
Step 6: Laser Cutting!
Now let's cut! We used one of the four Epilog Helix 24 laser cutters at the Tech Shop in San Francisco. Since we made this at the Tech Shop, I will assume that the reader has basic familiarity with the concept of laser cutting (we took the LAS101: Laser Cutting and Etching SBU and it was enough for us to get started with this project).
Step 7: Choosing the Material
1/8" MDF works great for small puzzle pieces; in fact, I don't know if you could go much thicker with MDF without exceeding the capability of the Epilog Helix 24 (or burning the material beyond recognition).
Since all laser cutters are different (not to mention that there are even variances between laser cutters of the same model), it is best to start with a practice cut on a spare piece of the material. I typically cut a series of small geometric shapes until I find the settings that give me the desired effect. For our purposes, we were only using vector cuts and the following settings worked fine for us:
* Speed = 25
* Power = 90
* Frequency = 500
As a side note, my favorite laser cutting trick is to cover the cutting surface of the material with blue painters tape - it allows for a nice clean cut and it prevents scorching. When the cut is complete, the blue tape comes off with relative ease.
The image above shows the cut-out after it was scaled down by 25% in CorelDraw. This demonstrates the benefit of scalability when using vector graphics.
Since all laser cutters are different (not to mention that there are even variances between laser cutters of the same model), it is best to start with a practice cut on a spare piece of the material. I typically cut a series of small geometric shapes until I find the settings that give me the desired effect. For our purposes, we were only using vector cuts and the following settings worked fine for us:
* Speed = 25
* Power = 90
* Frequency = 500
As a side note, my favorite laser cutting trick is to cover the cutting surface of the material with blue painters tape - it allows for a nice clean cut and it prevents scorching. When the cut is complete, the blue tape comes off with relative ease.
The image above shows the cut-out after it was scaled down by 25% in CorelDraw. This demonstrates the benefit of scalability when using vector graphics.
Step 8: Final Note
The first few steps of this article discussed calculations done using the commercial tool Matlab. The Matlab script is included for download and could also be run with minor modifications under Octave which is an open source Matlab work-alike. If one preferred not to use Matlab or Octave, the techniques from the Matlab script could be implemented in almost any programming language.
Edit: Originally, I had left it as an exercise to the user to create the SVG file but I have now included the file to help demonstrate the end result and to improve access to the information, especially for those who are looking to focus on the practical application of creating the puzzle itself.