Fractal Art and Design

Gregory B. Searle

LOADING

About the Artist

Gregory B. Searle is a digital computer artist with a Bachelor in Fine Arts from the University of Lowell (now U-Mass at Lowell) and a computer programming background. He combines these seemingly opposing skill-sets to create unique computer-generated “fractal” imagery using his own custom computer code. This allows him to explore a whole world of mathematically-generated imagery, carefully crafting the limitless parameters to produce one-of-a-kind, high-quality fractal prints.

At this time he is exploring trigonometric variations of the Mandelbrot, Tower of Powers, and Newton fractals at various real exponents. The combination of formulas, trig functions, fractional exponents, and different rendering techniques provides a limitless world of form and texture to explore. The expressive forms that emerge are enhanced by low-saturation or purely grayscale color schemes, highlighting shading, texture, and motion.

About this Site

This page is intended as a space to explore computer-generated fractal imagery as an art form. See the About Fractals page for more information. For frequent updates, works-in-progress, and other interesting items, see the Fractal Art and Design page on Facebook.

Site Index

Social Media

You can now find me on Facebook as FacebookFractalArtAndDesign and on Instagram under InstagramFractalArtDesign. I'll be posting my latest finished works here, as well as following my favorite fractal artists.

About Fractals

The word fractal roughly means “fractional dimensions,” referring to the mathematical tendency of a fractal shape to form somewhere “between” classical geometric dimensions. Fractals are created by iterating a mathmatical formula, geometric progression, or another repeating process to generate an increasingly complex, often beautiful result.

A classic example of a simple, geometric fractal is a Koch Curve. This fractal shape is formed by overlaying an isosceles triangle on top of an inverted isosceles triangle of the same size, creating a six-point star. This forms six more triangles. Repeat for each of these triangles, and again and again... This ultimately creates a sort of fuzzy-star shape, somewhat organic-looking. The figure shows an example of the first two iterations of this process.

Mandelbrot Set

Mandelbrot Set The Mandelbrot Set was discovered by the mathmetician Benoit Mandelbrot at IBM in 1979. He discovered that repeated application of a deceptively simple formula, z=z²+c produced an increasingly complicated result. The value of z starts at zero, and c is a complex (imaginary) number. The “set” is those values of c where the formula result never exceeds 2, (or “escapes”) no matter how many times the formula is iterated.

The colorful graphics that can be generated by a computer are created not by the points that exist in the set, but by those outside that escape the formula. Each escape point took a certain number of iterations of the formula to escape. Different colors can be assigned to the different iteration counts, such as a color gradient or an interference pattern (sine waves). Since complex numbers consist of two axes, real and imaginary, this can be plotted on a two-dimensional graph to create a fractal image.

Multibrot Space

The Mandelbrot set can be extended into three dimensions by adding another variable, the exponent. This exponent is traditionally fixed at the value two (or squared) in the Mandelbrot formula, z=z²+c. Since c is a complex number, the results are mapped onto a two-dimensional plane, with the real component mapped to the horizontal axis and the imaginary component mapped to the vertical axis.

Altering the formula to z=zn+c, we now can vary the exponent, n. A Multibrot simply changes the exponent to another fixed value and draws the resulting set. However, the exponent can be mapped to a third axis, creating a three-dimensional “Multibrot space” for further exploration.

Multibrot with real horizontal and exponent vertical How do we explore such as space? One possibility is to define a plane, or a “slice” through this space and calculate the resulting set on this plane. This is the approach I have taken, allowing a plane of arbitrary angle and position to be requested. See the “Multibrot Slice” formula option in my fractal generator. The image at the left is rendered with the real value on the horizontal axis, the imaginary value fixed at zero, and the exponent on the vertical axis.

Please see the Math and Fractal Everywhere pages for more details.

Fractal Everywhere

This is a fractal generator application that will run everywhere, in any modern web browser. Browser technology has advanced far enough to allow efficient, intense number-crunching of the calculations required to create fractals right in the browser. The application currently renders the Mandelbrot set and variations.

This is a web-based application, so the browser matters! It currently works best in Google Chrome. Though this application is standards-compliant, other browsers tend to have various issues:

The link below will bring you to the full version, the same version that I use to create the pieces in the gallery. A painter uses paints; I use a CPU. I am giving you access to my paints! Please be aware that this is always a work in progress. It will change at a whim.

iconFractal Everywhere

By using this application you agree to the following terms. This application is provided “as-is” and “at your own risk” without warranty as to suitability of use. I am sharing access without asking for compensation. No support is provided. I retain complete ownership and copyright on the code. The application does not track usage in any way above the normal web-host statistics typical of any and all other web sites. Your clicks and results within the application are not recorded. Any images produced are the sole property of the user under international copyright law. It is the user's sole responsibility to store and preserve any results. This CPU-intensive application will place a high demand on your battery. If your tablet overheats from CPU load, contact the manufacturer, not me.

Performance Notes

Browsers are taking steps to reduce the impact of CPU-intensive web pages on your web browsing experience. If you plan on performing some serious rendering in this application, you should consider disabling the CPU throttling in your browser.

To draw the most performance from your CPU, enable the Performance item under the Options menu. This is off by default.

Fractal Variations

Mandelbrot There are multiple interesting variations of the Mandelbrot set that arise through modifications to the underlying formula. You may switch the formula in use under the Control pane.

Mandelbar Mandelbar creates a three-lobed figure by using the complex conjugate of the traditional formula, which calculates the real portion minus the imaginary portion.

Burning Ship Burning Ship calculates the absolute value (positive only) of the formula. The result looks like a ship at sea, on fire. Magnifying behind the “ship” reveals some tall ships, also seemingly on fire. This pattern appears to the left of the Multibrot set rendered with the y-axis mapped to the exponent instead of to the imaginary component. (See Multibrot Slice, below.)

Cubed Cubed raises the power of the formula to three, instead of two. This creates a mirrored-image of the set, with some interesting differences.

Multibrot Multibrot* allows you to set the exponent of the formula to something other than the traditional second power. Larger numbers create a fringed circle effect, while non-integer values add some interesting complications. Negative values change the behavior altogether, and utilizes period mapping instead of the traditional escape method.

Multibrot Slice Multibrot Slice* takes a cross-section, or “slice,” of the multibrot set rendered in three-dimensions. The real and imaginary components are still mapped to the x- and y-axes, and the exponent is added for the z-axis. To take a “slice” of this form, extra parameters are available to define the plane of a cross-section.

This is a superset of almost all variations presented on this page. There is so much to explore, even without changing the parameters!

First, an Offset defines the distance of the center of the plane from the origin (0,0,0). Angle determines the angle of the plane from the z-axis (the exponent). Rotation specifies the rotation of the plane around the z-axis. Angles are in degrees, (0,0) facing “down” at a traditional multibrot rendering, in which case the offset is equivalent to the exponent.

It is very easy to get lost and end up with a blank screen! If this happens, zoom out, or reduce your offset to single digits, or Reset the parameters to start over. The active set is a narrow, vertical column. Keep in mind that you are rotating your thin render plane around the column, and not all solutions intersect. At this time, the parameters rotate around the origin (0,0,0).

Negabrot (Escape) Negabrot shows what occurs when the exponent is changed to -2. This implementation utilizes the same escape method as the Mandelbrot (though technically incorrect and somewhat unstable).

Negabrot (Periodic) Negabrot (Periodic) is the Negabrot variant above rendered “correctly” using period mapping.

Tower of Powers Tower of Powers* is a little different. It calculates the initial value c raised to the power of the result z over and over again, z = cz, starting with z = 1. You would think that this would quickly escape to infinity, but there are some stable areas that produce interesting results. This is very similar to what appears when you render the Multibrot with a very high exponent.

Newton Newton* fractal illustrates the chaotic nature of the Newton method for iteratively discovering the roots of a complex equation. By default, it renders in the Julia set, but things get interesting using other rendering options. This fractal is essentially a Multibrot formula divided by its derivative.

Select an image to go directly to the live rendering.

* Some of the formulas are more calculation-intensive than others, and will take more time to render.

More Details

Here are some more details on this application. First, it is designed for functionality, not to be pretty. If you're using a tablet or mobile device, touch support is rudimentary. The primary goals are flexibility, quality of output, and calculation speed (more below). I am always tweaking it with these goals in mind.

Flexibility A strong, customizable theming engine is built in for theoretically unlimited color theming of the fractals. It supports traditional gradient (ramp) themes, sinewave- based (wave) themes, and more complicated (and hard to manage) interference matrices. Many presets are provided to get you started. You can also build your own, which are saved in your browser's local storage. Note that if you clear your browser's storage, you will lose your themes! The theme can be applied as a linear, logarithmic, or exponential progression (see the Render menu) to control complexity. For finished work, the resolution can be changed to create print-quality results. There are many other parameters that can be fine-tuned.

The depth controls the maximum iterations allowed before the point is considered “escaped.” Without such a maximum, the calculation would take forever. This is automatically determined based upon the magnification. Several presets are provided, Moderate being the typical setting. You can also specify this number manually in the Details pane.

Quality. Oversampling performs multiple calculations per pixel to create a high-quality image. You can choose from Fast calculation with no oversampling to Fine 8x8 oversampling. For most exploration, you will probably stay in Good 2x2 oversampling for a balance of speed and quality. The calculation overruns by three extra iterations to smooth out banding artifacts that are typically created by an iterated process. Preview mode temporarily turns off calculation-intensive enhancements for quicker rendering.

For extra detail on your screen, you can enable Subpixel Rendering . Most LCD screens are set up with red, green, and blue elements arranged side-by-side on each pixel. This option takes the positions of these elements into consideration when rendering, effectively tripling the resolution of your display on the Detailed and Fine quality settings. The oversampling adjusts slightly to 6x4 and 9x8, respectively. Note that you should turn this off when rendering for print or web.

ASM.JS

Speed. The calculation engine is fully-optimised to run in the browser's asm.js compiler. This means that the browser distills the core calculation into native machine code (really fast)! The application contains its own benchmark, which I've used to fine-tune the performance. You can adjust certain performance parameters in the options. This application is multi- threading, and will automatically adjust to your device's capabilities, even if you're using a tablet.

Many factors will affect the overall speed of the rendering, CPU power being the primary constraint. The deeper you go into a portion of the fractal set, the more iterations are usually required to render a result. Oversampling quality and smoothing also increase demand. You can temporarily turn off all calculation-intensive enhancements with the Preview option under the Quality menu.

The Performace option under the Options menu will attempt to utilize the full capability of your CPU. Note that some browsers (ahem, Internet Explorer) will be extra aggressive when allocating your system's resources. By default, this option is not turned on to give your system some breathing room to operate other tasks.

Extended Precision for Deep Zoom

This application supports double-double-precision math for zooming in beyond the CPU's double-precision limit. Normally, the image will degrade into blocks if you zoom in too far; you've hit the precision limit of your computer when this happens. This application will automatically switch to extended precision when you hit this limit. This requires extra computation, however, and results in the calculation slowing down dramatically. You will see a brief notification when this occurs, and there is a “Precision” indicator in the “Details” panel that will switch from “Standard” to “Extended.” I'd recommend lowering the quality setting to “Fast” when exploring this deep. Expect long render times for finished fractals.

At this time, the formulas that require trigonometry don't yet support extended precision. The application will notify you if it can't do it. You can currently zoom deep into the Mandelbrot, Mandelbar, Burning Ship, and Cubed variations. Eventually it will have support for all variations.

Various Tips

You can save the browser's URL at any time to a bookmark in your web browser to remember the current fractal displayed. The displayed coordinates are compatible with any other Mandelbrot set application, however, the options in the URL are unique to this application. The Save Location option under the Options menu will automatically remember where you were when you come back later. Note that a saved URL (bookmark) will override this option.

Printing a rendering usually requires higher resolution output than your screen. You can manually set the pixel width and height through the Resolution setting on the Details pane. You will want to calculate the target width and height by multiplying the paper size by the desired DPI. Gamma is usually set to 1. If you are rendering for a print, you may wish to change this to around 1.2.

Resolution defaults to your web browser window size, or the screen size of your mobile device. With Auto Render enabled under the Options, your fractal will automatically re-render if your window size changes. This includes any bars that appear along the bottom of the window. To prevent this, click on the Set or Screen link under the Resolution setting to fix the resolution, ignoring resize events.

Saving your rendering is best achieved by right-clicking on the image and selecting the option to save the image from the menu. If your browser responds to the right-click by sending a regular click to the application, click Lock Coords above the coordinates first. A Save Image link appears on the Details pane when rendering completes, but this is memory-intensive and has limited support by the browsers. Note that some browsers will show a status bar at the bottom once you save an image, triggering a resize (and re-render) on the window. On mobile devices, use the Full Screen and Hide Controls options to clear all user interface elements, then take a screenshot.

Settings and custom themes are saved in your browser's local storage. If you clear this, all of your customization will disappear. There is no export function. However, custom themes are copied into the URL on the Coordinates link, so if you have saved a bookmark, your theme will be preserved. I take pains during development to honor older bookmarks so they always work.

Fractal App for Android

Note: The latest version of Android Web View has a display issue on some devices. The display will not update properly and you may see a blank screen, or a partial rendering. We have to wait for Google to fix the issue.

I've created a simple container app for Android that runs my fractal application on your smartphone or tablet. The advantage of this is that it is available offline at any time, and it remembers your place. The app version is simplified, as it is not running in a full web browser. There are buttons along the bottom to launch your work in the device's web browser, copy the URL to the clipboard, copy the clipboard back into the app, and to enter fullscreen mode on the device. It does not have capability to save the image at this time (use the device's screenshot capability).

AppFractal Everywhere

This app is not “official” and is not available in any app store. It is available “as-is” from this web site only. You must enable your device's ability to install apps from outside sources. I do not have an Apple development environment, so I don't plan on developing an iDevice version. This is a work in progress.

Tip: Access the latest updates by clearing the app's data on the device, then launching the app while connected to the Internet. Note that this will lose your place. Do this through the device's application management settings. Alternatively, you can uninstall and reinstall the app.

Math & Art

Wait, “Math” and “Art?” If you've come this far, you may be thinking twice about these apparent opposites. Yes, it's possible for the two to coexist and even complement each other.

This is a space to discuss various topics that don't fit elsewhere regarding art, math, programmatic details, etc. I hope you find this interesting. Chances are, you arrived here through a search result. If so, please explore the rest of the site! I plan to add more to this page as my exploration continues in this area.

Contents

  1. How is This Art?
  2. Perturbation Theory
  3. Smoothing
  4. Period-Mapping

How Is This Art?

Fractal Art When creating fractal art, the computer does all the work. Really, You press a button and out comes an image. You may be asking, how is this art?

The art is in the painstaking preparation. For example, an exquisite bronze sculpture is created when a metal foundry pours molten metal into a cast. The metal cools, the cast is opened, and the sculpture is there! It isn't that simple, though. An artist had to create the cast.

Computer-generated art requires an artist to set up the parameters. This requires careful exploration of the fractal space and fine adjustment of form and color. Like photography, framing and lighting are critical. It can take several hours (or days!) to create something that's worth rendering to print.

To continue the bronze sulpture metaphor, multiple copies of the sculpture can be created simply by reusing the mold. This reduces the value of each copy, unless the mold is broken after the first successful cast. This creates a one-of-a-kind piece of work.

The same can be done with fractal art. If only one print is created from the work, and the parameters are never shared, then the work becomes unique. It's possible to “break the mold” by securing or even deleting the parameters file and the rendered image file after printing. These become single-edition prints.

I have not had the courage to hit the delete button after finishing a work. The prints are one-of-a-kind, yet the original fractal provides opportunity for continued study. Unlike a mold, it is still a “living” work of art that can be explored further.

Perturbation Theory

Perturbation Theory has been around for a while, and it is a method for figuring out the results of an unknown relationship by calculating known relationships around it, then using the differences (or perturbations) as a means to get to the unknown value. See Wikipedia - Perturbation Theory for more information.

How does this apply to fractals? In March of 2013, Kevin Martin published a paper explaining a theoretical method to apply perturbation theory to the calculation of the Mandelbrot set. Application of the theory promised a couple of significant advantages:

  1. You only have to iterate once, leveraging the values collected during the iteration of a single sample point to figure out all the rest of the points in the fractal.
  2. All calculations are performed using standard double-precision floating-point processing, no matter how deep the zoom. There is no need to exotic extended-precision math.

These two advantages would eliminate the “brute force” technique traditionally utilized to render fractals, which requires million or billions of iterations of the fractal formula. By iterating just one point, the rest of the fractal could be rendered simply by leveraging the data collected, calculating perturbations for all the points around that reference point. In practice, more reference points are needed for complex areas of the fractal, but this usually results in only a handful of fully-iterated points being calculated.

The pertubation formulas for the Mandelbrot set cancel out the need for ultra-precise floating-point numbers when zooming into the fractal beyone 1015 magnification. All calculations can be performed natively on any computer's floating-point processor for any zoom level. This eliminates the breakdown or blockiness that occurs in deep zooms, as well as the need for CPU-intensive extended-precision techniques, and opens up the ability for nearly-unlimited zoom into a fractal.

The result: nearly real-time rendering with unlimited zoom!

Multiple existing fractal applications have already taken advantage of this theory and have implemented it. I am late to the game, and am currently working on implementing it for my own project. At this time, my application does not utilize perturbation methods, and relies on the brute-force iteration method. This will change.

Why do this if others have already done it? I am doing this to learn-by-doing, to enjoy the process of figuring this out, and to build my artistic toolset. By building it myself, I gain a better understanding of the subject and can better create art.

Smoothing

Smoothing vs. unenhanced banding Calculating a Mandelbrot-type fractal requires counting the iterations required for the formula to escape beyond a predefined value. This results in integer values, which when mapped produces a marked “banded” effect. A little calculus allows us to figure out how these bands are progressing overall and to smooth out the quantization effect of an iterating formula. This image shows the difference, the right half of the image being unenhanced.

Smoothing Formula

iterations + ln (2) - log ( log (r² + i²)
2 ∙ ln (2)
)

log (exponent)

In most cases ln (2), 2 ∙ ln (2), and log (exponent) can be precalculated into constants to speed iterative calculations:

iterations + LN2 - log ( log (r² + i²)
2LN2
)

LOGE

The iteration cycles must overshoot beyond the escape value a few times to collect enough samples for smoothing. This is a small price to pay for a more finished result.

Period-Mapping

Negabrot with periodicity texturing Rendering negative exponents “breaks” traditional escape-time rendering of the inside of the set. Instead, periodic rendering must be utilized to render under negative exponents. Typically, this requires time-consuming sampling of many iterations for each point. However, Aleksandr Lyapunov developed a methodology to determine period-calculation without such sampling.

Applying Lyapunov's work to the Multibrot universe, the calculation is fairly simple: take the natural logarithm of the average result and divide by the number of iterations run. No sampling, just apply a formula to the final figures. We can collect the sum over the iteration process without much extra CPU work.

Implementing this into a computer program, I realized that the formula can be simplified, I mean really simplified, with the goal of a satisfying visual result. The final periodic calculation used by this application resolves the average magnitude of a set of vectors. This provides a visual texture of the periodicity inherrent to negative exponents. My piece Sunset on Ice is an example of how complex this texture can become.

Simplified Periodic Formula

1
(∑r² + ∑i²) ÷ iterations + 1

Since we are already calculating these squares as a matter of building the fractal, collecting the sums is a trivial addition (no pun intended). Adding one to the denominator avoids a runaway result to infinity for vector lengths close to zero. On the other hand, the inversion inhibits runaway values in the other direction. The overall magnitude of the result can be controlled by changing the constant numerator from one to another value.

These calculations are leveraged for optional effect-rendering on the inside of the set for positive exponents, and the outer area for negative exponents. Period-rendering can be applied at any time in my application through the Render menu. Also, variations of the effect can be selected through the Effect menu. The application can render both escape-time and period-mapping at the same time for interesting results. Try it with the trigonometric variants of the Mandelbrot fractal.

See the Wikipedia articles linked in the Resources section for more detail about smoothing and period-mapping.

Resources

Here are a few additional resources for more information.

Related Organizations

Some organizations that I have worked with are listed below.

Contact Me

You may contact me through this web site.

fractal@fractalartdesign.com

Note that there is a “spam” filter in place.

Facebook: www.facebook.com/fractalartanddesign

Paypal: paypal.me/GregorySearle