Friday, April 17, 2020

Fractal Friday 2020.04.17

Here are a few new fractals created with pre-release MathPaint. These are all either standard Julia or Mandelbrot z^2 sets, with a warp function applied to the real part and a custom color mapping. Enjoy!






All images made by Christopher Corbell, ©2020 Mathaesthetics.

Friday, March 13, 2020

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!

Friday, February 28, 2020

Fractal Friday 2020.02.28

For today's post I'm showing off some the Apple Core Image effects capabilities built into MathPaint, with three Julia set fractals. By the way, MathPaint's release is now close enough for crowdfunding - please see our MathPaint IndieGoGo campaign for details, and a video of the application in action!

For each Julia set in this week's images I'm sharing the original color-gradient fractal, followed by three results applying similar sets of effects.

Here's a spiral Julia set with C = -0.63 + 0.4i, max iterations 500:

Adding vibrancy and posterize effects with MathPaint:


Here's the output of a Morphology Maximum blur, Edges, and Exposure Adjustment effects on the original:


The final example uses a Whitepoint Adjust effect to shift the original image colors (along with Brightness/Saturation/Contrast), then applies a Fourfold Rotated Tile effect:




Friday, February 21, 2020

Fractal Friday 2020.02.21

I started this week's Fractal Friday exploration by trying out higher-iteration-cutoff Mandelbrot sets.  Here are a few results with max iterations set to 1000, and higher breakout values than my usual setting of 10.0 - more detail definitely appears, especially in the boundary of the breakout value which becomes much more frond-like. The first one also includes a geometric texture backdrop layered in with MathPaint.





 I also tried the same with Julia sets, but at least for the parameters I was exploring had less luck there because Julia set thresholds seem to be a bit more abrupt. If values escape after 100 iterations, it's not easy to find higher breakout values that will permit higher iterative attempts to reveal more detail around the breakout boundary in the same way as Mandelbrot. Nonetheless I found some cool results, including this spiral that again has a MathPaint geometry-layer background:





I'm including a couple of different takes on the last one. First there's the base Julia Set image with some nice spiral figures. The image that follows uses the same parameters, xy-range and color mapping, but with a real-valued warp function added. The 'warp' is an inverse exponential function applied to the real part of z for each calculation, and the results are pretty cool. I include a couple of extra zooms into this warped fractal below.









I'm going to post some updates on the geometry renderer of MathPaint in the coming days - check back on the blog or follow on Facebook, Twitter, Instagram, or Pinterest!



Tuesday, February 18, 2020

Bring the noise! MathPaint gets more algorithms, plus templates

The forthcoming MathPaint beta now has a fairly complete noise-rendering feature set. There are several algorithmic noise-generation modes - Perlin, Billow, Ridged, and Voronoi - as well as MathPaint's own random-shape drawing mode.

In addition to the feature, I'm starting to build the collection of templates that will ship with the app as starting points - here's a screenshot of some Perlin noise applied as well as the templates window showing about a dozen noise templates that were added today:



While the templates are all grayscale, any color gradient can be applied to these noise patterns. In the case of the random shape patterns, instead of a gradient there's a pen color and a background color. As with all graphics layers in MathPaint, the layer opacity can be changed to make the noise a semi-transparent overlay of other generated content (or as image export, for use in other graphics programs).

Here are a few output examples from the noise templates, with colors changed:

Cloudy Perlin noise
Ridge-noise 'sandstone'
Gold billow noise
Grassy random segments (angle-constrained)
Chunky Voronoi noise in muted colors
MathPaint now has its own Facebook page you can Like/Follow for more pre-release screenshots and release updates.


Friday, February 14, 2020

Fractal Friday 2020.02.14

Here are some extended Julia Set (z^7) floral fractals for Fractal Friday, Valentine's Day edition - share them with your sweetheart!













This week's images are all zooms of the same set (unchanged function parameters and color mappings).

All images made with MathPaint, the flagship application for generative graphics on Mac OS X currently in development by Mathaesthetics.

You can follow Mathaesthetics on Instagram, Facebook, Twitter and Pinterest for more fractals and other math-generated art.

Friday, February 7, 2020

Fractal Friday 2020.02.07

This week I'm sharing the results of a cool new feature in MathPaint: fractals warped by real-valued functions. The application now supports defining a custom real-valued function that is applied during each iterative evaluation to the real part of the complex number 'z', before z is squared.

The possible effects are endless - from slight skewing to complete warping of the image, but generally the fractal retains its self-similarity and zoomability, as long as the real function doesn't drive it to a premature divergence or convergence.

A variety of approaches produced the images below, including use of a sine function with different powers of the input argument, a step function (a simple round() with some scaling applied), and a natural-log-base exponential function. All are warped Julia sets except for the next-to-last, which is based on Mandelbrot. A variety of MathPaint graphics features are also used such as edge drawing and different forms of color mapping.







More next week! You can follow Mathaesthetics on Instagram, Facebook, Twitter and Pinterest for more cool images and announcements about MathPaint, the app that makes them.


Friday, January 31, 2020

Fractal Friday 2020.01.31

For this week's post I'm showing off more of the rendering and layer-compositing options that are part of MathPaint. I'm using the same fractal settings for all of this week's images - a Mandelbrot set with breakout value at 10.0, max iterations set to 200, and viewed at the (approximate) ranges [-1.432, -1.345] on the x-axis and [-0.026, 0.06] on the y-axis.

Here's a 5-color linear gradient rendering, with the colors set at iteration-levels 1, 44, 90, 150, and 200:



We can play with not only the assigned colors, but also the way the colors are mapped. Here's the same fractal using a color cycle, where each level is mapped to the next color and when all colors are used up, it starts again. I get a gradual gradient effect here by using 16 colors, all the same shade of blue that get darker and lighter through the cycle, so it's a more gentle effect than my previous color cycle examples:



The rest of this week's images all take advantages of MathPaint's layered-rendering architecture. Fractals are just one of the types of layers we can create, and all layers support transparency so they can be composited. Here's another gradient rendering, but in this case the max color is assigned to be transparent, so whatever is in the layer below will show through the set. I've put a cartesian function layer underneath to create a pattern with a repeated, gently-skewed sine function:



I also added a couple of CoreImage filters to the above rendering, to add a little extra glow and vibrancy.

The edge-drawing mode that MathPaint supports also leaves a transparent background by default (though you can turn on an opaque background color if desired). Here's the same fractal rendered in edge mode, with a 2D geometry layer underneath. The polygon is drawn repeatedly with a resize-shape delta applied to create the expanding background pattern:



The final example uses two fractal layers, with the same basic parameters but very different rendering approaches. The front layer only calculates every 10 points on the grid, and draws a circle whose size is scaled by the iteration value, again leaving a transparent background. The underlying layer is rendered with a three-color gradient:



I'm getting pretty excited about the upcoming private beta of MathPaint 1.0! If you want to keep up on MathPaint release news you can "Like" the MathPaint Facebook Page, and if you would like to see more images made with MathPaint just follow Mathaesthetics on Instagram, Facebook, Twitter, or Pinterest.

Friday, January 24, 2020

Fractal Friday 2020.01.24

This week I've been busy working on the MathPaint architecture so didn't develop any obvious fractal rendering features... Though I did succeed in getting some optimizations in to speed things up, and the fractal renderer is now fully concurrent (using Cocoa OperationQueue and Operation objects.)

This week I chose to explore another of my favorite fractals, the 3rd-degree Julia Sets (same as regular Julia sets but taking z^3 instead of z^2.) I also decided to keep things fairly consistent in terms of color this week, using linear gradient mappings between three colors for each image. I hope you enjoy the results!






Next week I expect to get a little more experimental, particularly since the performance improvements will all be done so I will be able to visit unexplored areas more quickly. Until then, you can follow Mathaesthetics on FacebookTwitterInstagram, and Pinterest.