Transmutation Circle Generator

by Christopher King

Table Of Contents

A procedural transmutation circle generator inspired by Full Metal Alchemist

I've always been a big fan of Full Metal Alchemist and one of the coolest parts of the series are the intricate transmutation circles. I needed some circles for a project I'm working on, so I thought it would be a fun challenge to see if I could make a procedural transmutation circle generator.

Generator

Generated under CC-BY-NC 4.0
For commercial use: CLICK HERE

Circle Settings
The value used in the noise functions to get deterministic numbers Seed:
The height / width in pixels Border Spacing
The height / width in pixels Symmetry Count
The height / width in pixels Tiers
Image Settings
The height / width in pixels Canvas Resolution
The height / width in pixels Margin
Scale of the noise. Smaller values create smaller groups of trees. Line Thickness:
Scale of the noise. Smaller values create smaller groups of trees. Border Thickness:
Advanced
The height / width in pixels Configuration
The height / width in pixels Symbols

Explanation

Let's analize how this image is made from the outside in. It starts off with a border of varible width that has a thicker stroke than the inner lines. Within this border, there is a ring of procedural text taken from the WIkipedia article on alchemy and translated into latin. Moving in from the border, the circle is then divided into two to twelve sections of rings. Each section divides the cricle into 0 to 12 equal points of interest based on the symmetry count. There is a chance of there being primary nodes and the others becoming secondary. Each sections's nodes have a chance of creating various types of connections. There are lines to neighboring points, lines to the center of the circle, lines connecting midpoints, and lines to every other node. Points may also have arcs inscribed between their neighbors. A node may have an alchemical symbol placed on it. Luckily, unicode text already has all the alchemical symbols so drawing them was as simple as a print statement. The symbols can be circled with underlying lines erased. This whole process can be followed again on a lower tier. All we have to do is move the origin and reduce the starting radius of our circle. To cap it all off, the only option at the very center of the circle is a circled symbol, or an empty circle with no symbol.
I might expose more of the parameters to get more fine tuned control over the generation if this project garners any attention. But for now it serves my needs. Feel free to use or modify the images generated with this for any purpose under a CC-BY-A