Back in October of 2016 I was contacted by Daniel Christev about an interesting modeling problem. It turned out that Daniel and I were mutual admirers of each others work. For anyone unfamiliar with his, I encourage you to check out his website at christevcreative.com.

Daniel asked me if I had any thoughts about modeling a “3D Spirograph.” A Spirograph is a toy which allows people to draw a huge variety of beautiful curves. According to the Wikipedia page, it was invented in 1965 by the British engineer Denys Fisher, and was the UK toy of the year in 1967. It is still sold today.

As you can see in the picture, the way it works is to put the point of a pen in one hole of a gear, and maintain contact with the paper below as you roll the gear around a fixed plastic ring. The gear can be placed either inside the ring or outside. Furthermore, each set comes with several sizes and shapes of gears, and each gear has many holes to choose from. Each choice of gear, hole, and inside/outside results in very different curves. Here are just a few of the possibilities.

Mathematically, each curve is either a “hypotrochoid” or an “epitrochoid.” Both are examples of “roulette curves.” If you are familiar with any programing/scripting language, its a great exercise to work out the mathematics yourself, and code it up to create your own custom Spirograph-like curves.

Back to Daniel’s problem. As I mentioned, he was wondering about how to generalize these curves to something 3-dimensional. There are several ways to interpret this. My first instinct was to imagine the track of a point on a sphere as it rolls over some curve on a 3-dimensional surface. Unfortunately, when we implement this the resulting curves turned out to be somewhat disappointing. For me at least, they were not nearly as aesthetically pleasing as the original 2D Spirograph curves. I think that’s because what our eye is drawn to in the original curves is how beautifully symmetric they are. That same degree of symmetry is hard to get from a rolling ball on a three-dimensional surface, unless its just rolling over the equator of a larger sphere (resulting in 2D spirograph curves!).

After much thought and experimentation, I decided to re-interpret the problem. Instead of a sphere rolling over a 3D surface, I used a circular wheel rolling along a 3D curve. To make the problem well-defined, I keep the wheel in the “curvature plane” of the 3D curve. That’s the plane of the circle that best approximates the curve at each point. (For the technical crowd, it is defined at each point by a tangent vector and the curvature vector.) To create a 3D Spirograph-like curve, one has to track some point as the wheel rolls. It’s interesting to experiment with what happens when the distance of this point to the center of the wheel was larger than the radius of the wheel.

Again, the most interesting curves are created by starting with something symmetric. The nicest thing I found came from using a trefoil knot. Below is an animation of one curve you get by this method.

Here’s another animation that shows the effect of varying the wheel radius, while keeping the distance from tracking point to wheel center fixed. The wheel radius here goes from negative to positive, analogous to when the gear of a classic 2D Spirograph is place inside or outside of the ring.

And finally, a third animation to demonstrate varying the distance from tracking point to wheel center, while keeping wheel radius fixed.

After playing with the parameters for a while I settled on one choice that seemed the nicest, and 3D-printed it at Shapeways. I’m not quite sure what (if anything) to do with this. I added a little loop at the top thinking it might make a nice necklace. Someone else suggested maybe a Christmas ornament? Suggestions are welcome in the comments. Below are side and front views of it.