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.

Friday, January 17, 2020

Fractal Friday 2020.01.17

This week's images again come from some experiments with new features for MathPaint, the flagship software app I'm working on.

Previously I posted some experiments with edge rendering in fractal geometry, where only the boundary between levels of output are drawn. It shows the boundary between iteration levels but does not indicate the level itself (which is normally shown by a color gradient value).

This week's experiment takes a different approach to interpreting iteration values, which are integers in a fairly small range (usually 1 to 100 or at most a few hundred). Rather than render the level as a color, we convert it to a size - and draw a shape centered at the point, at the indicated size. Higher iterations create bigger shapes, quick iteration boundaries create very small shapes. We use a sparser grid (only evaluating one of ever five, eight, or 10 pixels - the setting can be adjusted). The idea is similar to an alternate vector field rendering which was explored in this blog.

Here's the familiar Mandelbrot set, rendered with squares drawn at sizes corresponding to iteration levels:


I like the rather stark, structured aesthetic that the squares lend to the shape. A bit more lively is this Julia set zoom, drawn with the same square shapes (and a different line color):


Different shapes can change the character of the rendered images. Here's a z^5 julia set (one of my favorite forms) rendered with circles, drawn with a 2-point line:


And a zoom in on the same image, with background and foreground colors changed - I like this as an abstract image that isn't recognizably a fractal, but the underlying math gives subtle organic pattern to parts of it:


Finally here is a regular Julia set rendered with 45° diagonal lines, first zoomed in, then zoomed back out with thinner lines:



More MathPaint screenshots and mathematical art coming next week! You can follow Mathaesthetics on FacebookTwitterInstagram, and Pinterest.

Wednesday, January 15, 2020

Hello World, from MathPaint! (Preview)

If you've been following Mathaesthetics posts you've seen a variety of images shared - different types of generated art from fractals to repeated 2D plots to vector fields and scalar fields and more.

All images on this blog are created by our flagship software product, which has been in development since November 2019. Today for the first time I'm publicly sharing some screenshots of the user-interface, starting with a few document windows:

Hello World, from MathPaint!

These MathPaint documents were used to create our app icon and current Facebook cover.

MathPaint is a Mac OS desktop application written in Swift. A private beta release is planned for February 2020, and the completed 1.0 application will be released later this year, through the Apple AppStore.

CoreImage effects can be applied to any MathPaint canvas
I've always felt that creativity and mathematics belong together. MathPaint is designed for creative professionals who would like to harness of of the endless generative capability of mathematics to create visual forms, patterns, textures, and algorithmic art. You don't need to be a programmer to create such designs with MathPaint, and the release will include visual templates and presets that are intuitive to browse and modify, plus cool automation features:

The "Repeater" feature can add multiple iterated re-renderings to a model

I also think MathPaint is a natural tool for students. While there are robust software products for mathematical modeling and computation, MathPaint focuses on aesthetics and uniquely permits the creative impulse to guide mathematical learning and exploration.

I will be using MathPaint to make art, and I hope to see a community of makers who create original expressive work with this software. Even algorithmic artists used to coding may find some rewarding features and workflows with this tool.

Document settings give you a page-layout app's control over your math-art canvas.

Now that the first screenshots are out, look for weekly updates and posts on MathPaint progress! And of course, a continuing stream of art, including our Fractal Friday posts, all made by MathPaint.



Friday, January 10, 2020

Fractal Friday 2020.01.10

ICYMI, I'm currently writing an application that generates mathematical art. It's created in Swift, for Mac OS desktop systems. All the images on this blog are created from it, including the fractals posted every Fractal Friday.

This week I hooked up a full range of CoreImage effects to the app, and I'm having fun sending fractals through tiling effects to create some really cool repeating patterns.

For the first one I used a small 320x320 source image of an edge-rendered Julia set section

I played around with this image using the Twelvefold Reflected Tile and Eightfold Reflected Tile filters to get these:




I used a more psychedlic-looking color-banded Mandelbrot section for the next set:


Friday, January 3, 2020

Fractal Friday 2020.01.03

The noise renderer has gotten more sophisticated in the past week, and it's being put to work in this week's set of fractals. Each image includes a generated noise-texture, with various approaches to transparency in the fractal permitting the texture to show through.


The Julia set image above has a semi-transparent purple in the color mapping which permits a fabric-like texture to show through giving the rendering the feeling of a woven fabric or paper fiber texture.

This bold, edge-drawn mandelbrot set view is a bit more stark against its chiseled, black-and-gray noise surface:


An N-cubed mandlebrot section gets a bit subtler treatment with a horizontal grain texture, which shows through most clearly in the dark 'maxed-out' section:


A bit crazier are the curve-and-line-segment generated scribbles showing through this Julia set segment's color cycle, with transparency in each color band:


While it's only the beginning of January, this 5th-degree Julia set floral image looks forward to spring, especially with the tangled green bezier-noise suggesting foliage, showing through the transparent lower-iteration values around the floral center:


All of these images were created with the Mathaesthetics flagship software, a desktop app for Mac OS X which has now been in development for two months. The first beta will be released early this year, with a full release coming before summer. If you like these images and are interested in creating your own with this software, or just seeing more as the software evolves, make sure to follow Mathaesthetics on Twitter, Instagram, Facebook - and we're also now on Pinterest!