Fractal Friday 2020.03.13

* UPDATE * we have 2 weeks to go on our IndieGogo campaign for MathPaint! Please support the release of this great new generative-art application. You can also pre-order it for 10% off!

While zooms are the most common type of fractal animations, I really enjoy the results of animating by gradually shifting a fractal parameter. The animation features in MathPaint actually let you alter any of the parameter values individually, as well as zoom, overally x/y origin location, etc:

These first two videos use this feature to animate a shift in the imaginary component of ‘z’ in Julia set.

Julia set ‘ice’ animation

Julia set ‘sparks’ animation

The next one is a z^5 Julia set that is also has its i-part changed, but in addition the x axis is shifted a little each frame, with a slight zoom, so it glides across the screen.

Julia set z^5 animation

The final video features a section of the Mandelbrot set ‘revealed’ by gradually increasing the algorithm breakout value. It starts at 0.8, where all x,y values break out after just a few iterations, but as the breakout value gradually increases the structure emerges.

A nice side effect of focusing on animation is that it also had me really dig into fractal rendering performance in MathPaint. After several rounds of improvement, small fractal images now appear to render almost instantly, and these 1080p images render at about 8 seconds per frame. There is still more optimization that can be done, particularly in the drawing phase (using Cocoa drawing / CoreGraphics in Swift), but the performance now feels sufficient for productive graphics work.

More to come next week, when the fractal renderer may finally be feature complete! If you haven’t already, please like Mathaesthetics and MathPaint on Facebook, and follow/retweet us on Twitter if you like what we’re up to!