Superformula

I've been looking into procedural plant generation recently. One of the aspects I'm interested in are methods for producing leaves, petals and flowers. While doing some digging around that topic, I stumbled upon the so-called superformula - an equation that produces some funky-looking curves.

The superformula was invented by Belgian mathematician Johan Gielis. Incidentally, he also wrote a book called "The Geometrical Beauty of Plants" (title probably alludes to ABOP), so yeah, he is definitely interested in plant synthesis :-)

Anyway, the superformula equation given in 2D polar coordinates is as follows:

r(φ) = (|cos(0.25m1φ)/a|n2+|sin(0.25m2φ)/b|n3)-1n1

...where a, b, m1, m2 n1, n2, n3 are parameters that you can tweak to achieve a different look for the resulting curve.

Let's plug it into Shadertoy and see how it works:


Click to go to Shadertoy and see the source code

Play with the parameters to figure out how each of them affects the result.

I added offset/rotation/scale parameters to the curve function to allow drawing multiple curves at different locations:


Like this post? Follow this blog on Twitter for more!