Posted on October 20, 2021


“Rotae” is a generative art collection that I created for Art Blocks. It is based on, and is an ode to, the vast array of beautiful shapes that can appear from the seemingly simple process of letting circles rotate on (many more) circles. The name of the project, Rotae, means “wheels” in Latin, and is a nod to the paper that describes the math behind finding a certain m-fold symmetry, regardless of the number of circles that are chained together.

Test outputs from Rotae

“Rotae” is now fully minted! You can see the gallery with all 529 outputs here and if you’re interested in getting a Rotae from the secondary market, you can find the collection on OpenSea. If you already own a Rotae, check out the Animating the Wheels section below where you can input the hash of your piece and see the underlying wheels that make up the shape!

Each shape is also animated after a few seconds, which can reveal the intricacies of the underlying path, and sometimes even reveal a most surprising hidden shape, such as a heart in the video below.

The animation starts after a few seconds and can reveal quite unexpected hidden shapes, such as this heart

For more fun, you can play with Rotae on PopRank to decide which one you prefer between any two results, and thereby help determine the overall visual ranking of the collection! (It’s also quite addictive I have to admit (^∇^) )

Having fun with the Rotae results on PopRank

The Technique

Using a hash as its seed, the pseudo-random-number-generator chooses the number of wheels (between 3 and 8) and what m-fold symmetry to create. Next, the wheels are randomly given radii and frequencies that will create the aimed-for symmetry.

Working from the symmetry towards the wheel settings (plus a few nudges here and there) makes sure that you don’t end up with paths that have to go around for tens or hundreds of times before finally closing again, which usually result only in very round shapes. Instead, using the symmetry math from the paper it’s possible to create shapes with a symmetries below 10-fold, giving a seemingly endless variety in what comes out, and clearly showing the path.

Rotae #9 and #92

Animating the Wheels

I find that the shapes can take such unexpected forms that I’m sometimes almost doubting that it’s been drawn by simple circles systematically going around and around! I’ve therefore created the animating demo below. By default it takes a random hash, but you can also input the hash of any mint (specifically meant for the Rotae mints of course) and this will reveal how the final shape is drawn from its collection of circles/wheels, plus give you the detailed information about each wheel, such as its size and frequency.

The tokenData.hash that is used for the seed of the random number generator is not the same as the transaction hash that you see on the page of your transaction. Instead, you can find it by going to the mint’s page on Art Blocks, clicking the little “square with arrow pointing to the top-right” icon you can see in the lower right of the mint image. This will open up a new page with the mint itself. Next go to the devTools (generally you can right-click the page anywhere and choose “Inspect”). Within the devTools console type tokenData.hash and there is your hash! For example, try 0xd6eb1c4648814d31f830f69321bd7460b1d096a0db6e9b2a3ae709d4e836c679 which is the tokenData hash of mint #0 of Rotae. See the video below for a visual explanation on how to find the tokenData.hash.

How to find the tokenData.hash from a Rotae mint

Note | the animation will always show the “normal” smooth path for any hash, also for the mints that have their feature of path equal to angular. In those case the shape below can look a bit / quite different from how the minted version looks.

Input the TokenData Hash





To explain what the different columns mean:

With this you theoretically have all the info you’d need to recreate the base path of the shape yourself if you feel like it (⌐■_■) You can find more about the math of spirographs, and more generally “wheels rotating on wheels”, on this and this page.

Rotae #438 and #360


Let me explain all of the different features possible within Rotae that have nothing to do with the shape of the path, but instead with how it appears visually.

Drawing Style

There are several ways in which the path can be drawn. The most common is the default full line which is used for 68% of the pieces:

Rotae #444 and #423 which have the 'line' drawing style

There is also an ellipse that rotates as the path is drawn, which becomes more magical as you watch the animation of the line. There is both a filled and stroked ellipse (only 9 pieces are in the stroked ellipse style, with 76 in the filled ellipse style, together about 16% are drawn in this ellipse style). Furthermore, if the path type of a stroked ellipse style is angular the shape becomes a diamond, which you can see for Rotae #237!

Rotae #523 and #494 which have the 'ellipse' drawing style, with the right one being 'stroked'

There is also a style that mimics the Italian calligraphy pen, with the straight oblique nibs. This results in the line creating wide paths when moving in certain directions and very thin ones for other directions. There are 38 Rotae with this style (7%).

Rotae #89 and #45 using the 'italian calligraphy' style

Another style uses lots of circles to fill in the space of a regular line, called confetti. There are 29 of these Rotae (5%).

Rotae #144 and #338 drawn in the 'confetti' style

The two rarest styles draw the line with either clearly separated squares and circles. For the square style you can also have filled and stroked squares. There are only 2 Rotae with the filled style, giving an almost pixel-art feel, and 8 Rotae with the stroked squares.

Rotae #67 and #8 drawn with 'squares' with the right one in the 'stroked' style

The circle style strings together circles along the path, increasing and decreasing in size. There are 7 of these Rotae.

Rotae #68 and #12 in the 'circle' style

Radial Style

Even within the drawing style of using a fixed line, ellipse, or another shape there are different ways in which that line behaves. However, most of these radial styles appear within the line drawing style only, with most other drawing styles having either one or two of the options shown below.

There is the fixed line, which is a big chunky line that stays the same radius throughout. This is generally used for Rotae with relatively short paths (84, or 16%, Rotae have this feature).

Rotae #233 and #75 drawn as chunky 'fixed' lines

There is also a distance radial style where the line gets thinner the closer it gets to the center, used for 152 Rotae (29%)

Rotae #502 and #158 drawn with the 'distance' radial style

Another one mimics a thick brush style that gets thicker and thinner along the path, with 142 Rotae (27%). Like the fixed radial style this one also generally works best for the shorter paths.

Rotae #505 and #109 using the 'thick brush' style

For the (very) long paths there is a thin brush equivalent instead, with 139 Rotae (26%).

Rotae #461 and #174 have the 'thin brush' style

Finally, there is the thin style that is used specifically with the ‘Italic calligraphy’ nib drawing style for very long paths (with 11 Rotae (2%)).

Rotae #301 and #395 have the 'thin' style that combines with the 'Italic calligraphy' drawing style

Path Type

The final feature that has an impact on path itself is whether or not the line is draw in a smooth way, or if the path takes large jumps in between sampling from the mathematical formula, create interesting angular results (76 Rotae are drawn in an angular style (14%))

Rotae #455 and #63 with the left being drawn in the default 'smooth' way and the right in the 'angular' way

Color Palette

Rotae has 17 different color palettes. The palettes are spread out pretty evenly across all Rotae, ranging between 3% - 8% of the full collection. Many have very vibrant colors because of personal preferences (⌐■_■)

Space (9%) and Sunset (10%):

Rotae #3 in the 'space' palette and #247 in the 'sunset' palette

Fog (5%), which uses a randomly picked (dark) hue as the background, and Taxi Cab (3%):

Rotae #398 in the 'fog' palette and #247 in the 'taxi cab' palette

Hot / Cold (6%) and Antique (6%):

Rotae #339 in the 'hot / cold' palette and #396 in the 'antique' palette

Doogle (9%) and One Hue (3%), where the latter randomly chooses its (dark-ish) hue:

Rotae #384 in the 'doogle' palette and #309 in the 'one hue' palette

Viridis (5%), which is based on a good and popular data visualization color palette, and 80’s Pastel (6%):

Rotae #221 in the 'viridis' palette and #219 in the '80's pastel' palette

Winter Fire (6%) and Popsicle (4%):

Rotae #280 in the 'winter fire' palette and #352 in the 'popsicle' palette

Dark Rainbow (8%) and Chaos (6%), with the latter being one of my favorite color palettes and one that I’ve used across all of my long-form NFT collections since, always named Chaos:

Rotae #504 in the 'dark rainbow' palette and #277 in the 'chaos' palette

Maleficent (4%) and Queen of Hearts (5%). As a Disney fan I used inspiration from these two wonderful villainesses:

Rotae #197 in the 'maleficent' palette and #277 in the 'queen of hearts' palette

And finally there is the Snowflake (7%) color palette, which always has a dots background to give the illusion of some snow:

Rotae #199 in the 'snowflake' palette

Color Flow

Each color palette is defined as a gradient between certain colors. The color flow feature determines if the line should be drawn from that continuous palette, or if the gradient should be discontinuous, broken along the line and started in a completely different section within the gradient again. The latter creates a feeling of colored “sections” within the line. There are 298 Rotae with the discontinuous setting (56%) so it’s pretty evenly split between the two.

Rotae #213 and #311 with the left having a 'continuous' color flow and the right a 'discontinuous'


There are four different background effects. From an even colored background (which is always the case for the taxi cab color palette), used for 59 Rotae (11%)

Rotae #213 and #123 have an even colored background

The most common background uses gradients. Some are very obvious, using colors quite different from the background, while others are so subtle that you have to really look before you’ll notice the soft fade between colors. There are 279 Rotae with the gradient background (53%).

Rotae #313 and #343 have gradients coming from the corners and sides

My personal favorite is probably the dots background that fills the background with hundreds of tiny dots, like splatters of paint. For the space color palette however, these turn into stars and vague nebulous areas are drawn to really get that space vibe. There are 160 Rotae with a dots background (30%).

Rotae #497 and #439 use 'dots' on the background, with the right one getting extra nebulous patches to make it look even more like space

Finally there is the pop background, which is the rarest with 30 Rotae having this feature (6%). This only happens for three color palettes; space, sunset, and dark rainbow. By simply changing the background color (combined with the color blending mode already set by the color palette) you can get some truly different and interesting results

Rotae #257 and #146 have the 'pop' background, with the left from the 'sunset' color palette, and the right in the 'space' palette


There are 142 Rotae (27%) that have the sparkle feature, which drawns tiny circles within (and sometimes around) the line for some extra magic. This is usually only really visible when you see the image on a big screen though. Certain color palettes will always have a sparkle, such as snowflake and fog.

Rotae #418 and #448 both drawn with 'sparkles'


I’ve loved spirographs since I was a kid. I had one of those kits and would draw all kinds of flower-y shapes. I would definitely get frustrated though when I made a tiny mistake with my pen, or the circle would move just a little. I could start all over again…

The current 'mini-kit' I still have to create spirographs IRL

When I discovered programming years later, and especially when I dove into SVGs and d3.js, it didn’t take long before I found my way back to spirographs. Using code to create a spirograph will make it absolutely perfect, every time. It’s drawn near instantaneous, but you could also animate it. And, if you wanted, you could break the perfectness and sometimes get some very interesting results when the conditions were just right.

Officially “circles on circles” would be a fourier transform, epicycles would perhaps fit better, but I feel these shapes feel closer to spirographs. According to Piter Pasma these are “Polyepihyperderpflardioids”, which is an awesome name!

Best of all, you could work with an endless number of ‘wheels’, not being limited to the two that are possible in the physical realm, creating ever more intricate patterns. More than two wheels are no longer spirographs though. In fact Spirograph is only the name of the toy, not a mathematical description. However, most people know the term “spirograph” and what it conveys, so I’m often using the term “spirograph” to describe my results from this algorithm.

The purchase in March 2020 wasn’t a coincidence of course, having suddenly had all my clients and a vacation fall away.

I created an online page to randomly draw spirographs during 2016. However, it was through the pen plotter that I bought in March 2020 that I really got back into working with them. I started with bigger spirographs that would be as wide as an A4 page, going around hundreds of times before closing (if at all).

Some big spirograph versions made on my AxiDraw pen plotter

Wanting to learn more about the math underlying the idea of circles rotating on circles and their symmetry I came across the paper by Frank A. Farris about “Wheels on Wheels on Wheels”. I adjusted some of the math from there into my own code and started experimenting with 3 and 4 wheels, drawing a grid full of tiny tiny shapes.

I was amazed by the enormous variety of shapes that I saw and definitely wanted to dive even deeper. However, life went on and you get distracted by other things, work, etc… so I didn’t really touch it again for about a year.

Drawing mini shapes with my AxiDraw pen plotter

When I started learning about NFTs during July of 2021 I quickly found the existence of Art Blocks and thought it would be damn amazing to be able to release a project for Art Blocks, having the code itself live on the blockchain. Since my expertise lies in the visualization of data, which wasn’t an option to use with Art Blocks, it was clear as day for me what I wanted my project to be based on instead; wheels rotating on wheels.

At first I tried to mimic the feeling/design of a pen plotter, but then made digitally. However, after some advice I pivoted away and instead focused on how I could draw these shapes in ways that would be near impossible with a pen plotter, really embracing the possibilities of the digital medium; gradients, backgrounds, vibrant poppy colors, changes in line thickness, different kinds of lines, etc.

During July and August I started with the code that I’d already made for my miniature pen plotted spirographs and took it several steps further to eventually become “Rotae”.


Of the proceeds of Rotae that were above the resting price 25% have been donated to two charities that I’ve long been following; $2229 to each charity.

The first charity I choose is The Ocean Cleanup, founded in the Netherlands that is dedicated to cleaning up our Oceans. The second is the Cheetah Conservation Fund. The Cheetah has been my favorite animal for as long as I can remember (ノ◕ヮ◕)ノ*:・゚✧ . I’m really happy to have supported both of these wonderful charities with Rotae!

Rotae #69 and #82

See also