Author, Publisher, Developer, Stitchcoder


Periodic Table Quilts

UPDATE! These quilts are now for sale!

Click here to order one

I've made a bunch of periodic table quilts recently, incrementally improving the design on each one until I'm pretty happy with it. There are quite a few issues that come up trying to do this...

The first question is font. Bold, sans-serif fonts (Arial Black in this case) look great because they puff out nicely, as in this example:

But if you don't have those lines in the background to connect the letters, you end up with a lot of separate regions, which requires a lot of clipping of threads between letters. And the space between the letters puffs up just as much as the letters, making them harder to read because the negative space shapes are similar in nature to the letter shapes. That's an annoyance you can largely eliminate by using a serif font, especially one (like Bodoni 72 in the next example) that has extra-long serifs, allowing neighboring letters to nearly touch each other.. As an added attraction, it also has strong variation in stroke width, which means the interior parts of letters like e and a always come very close to the outside at some point, making it possible to connect parts and letters to each other without a noticeable connecting line of stitches. All the words in the titles here are stitched without breaks:

For this reason I chose Bodoni 72 for the element symbols and titles, except for variations with background lines.

Then there's the question of the font for the small lettering in the tiles (the element names and atomic numbers). My first inclination was to use a bold font, thinking that would be bold and readable. This turns out not to be the case, because you get only the outline of the letters, not the whole area filled in. With a very bold font, the space between letters is about the same as the space within the letters, and the letters blend together too much, as in this example:

It turns out to work much better to use a thin font (Nobel-Light in the following example) to get maximum separation between letters and the space between them.

There's another subtlety with small lettering: stitch placement error. The machine very annoyingly re-sample all stitch paths to a fixed stitch length (a long-standing bone of contention not easily remedied), which means that when the line turns a sharp corner, that corner is liable to being rounded over. Look at this horrible rendering of protactinium:

See how the P and the R don't close up? That's because the inner circles are stitched in such a way that the line changes direction when the connection is made. Compare to this improved version:

It's still far from perfect, but at least there are no gaps where lines are supposed to be complete. That's because both inner rings are now stitched in such a way that the stitching line crosses over at the connection points rather than doubling back. (This is done with code that, having decided to link two parts of the design with a connecting line, looks at the curvature of the incoming and outgoing lines, and if necessary flips the order of stitching of one of the parts of the design to ensure that the line always exits the connection on the opposite side from the one it entered on. As long as all parts of the design are loops, and they are each connected at one point only, it's a theorem that you can always make all connecting points into crossing points.)

I should mention at this point that each square in the design is a single connected line, no skips. That's done with some new code I wrote that takes any set of loops and splices them together at their points of closest approach. It happens to be a fact that the outline of any stroked shape (e.g. a letter) will always consist of one or more complete loops, and they can always be spliced into each other. (Then there is one more loop that is the square around the outside.) Notice how cerium, for example, connects the letters of the name at the bottom, while protactinium connects to the bottom only in one place, with the letters then connected to each other. That's because protactinium is such a long name that the code has to compress it horizontally to make it fit, resulting in letters that are closer to each other than they are to the bottom. (This process is 100% automated, no human was involved in the layout or routing of any element tile, other than to set the rules of the game.)

I've just started making a black-background one, and it's looking nice!

Here it is stretched and mounted on a frame:

A brief note on technology. The design was, of course, done with Mathematica. (Lord knows how else you could do it, I certainly wouldn't want to try!) The letter forms were acquired using a trick that lets you export text in any font to EPS with all the letters converted into polygons, then re-import the EPS and extract from it those polygons. (This is one line of Mathematica code.) Further code measures the resulting outlines and fits them into the space available for each component of each element tile. The meat of the code is the part that recursively links up parts of each tile at their points of closest approach, resulting in one line for each element. The periodic table as a whole is then linked up with attention paid to the order of stitching to minimize warping and placement errors in the final result.

Once I have a few of these finished in different colors and have set up a shop for people to buy them, I'll tell the people over on my other blog about them, but for now I think it's too much stitch-nerdery for that group! 


Here are large images of the two final designs, in case you want to see what the stitching pattern looks like. First with a serif title font with no connecting lines: Looks best with a highly contrasting thread color:

Then with sans-serif title font with connecting lines. Looks best with a low-contrast thread color:

Theodore Gray15 Comments