Fractal-generating software is any type of graphics software that generates images of fractals. There are many fractal generating programs available, both free and commercial. Mobile apps are available to play or tinker with fractals. Some programmers create fractal software for themselves because of the novelty and because of the challenge in understanding the related mathematics. The generation of fractals has led to some very large problems for pure mathematics.[1]
Fractal generating software creates mathematical beauty through visualization. Modern computers may take seconds or minutes to complete a single high resolution fractal image. Images are generated for both simulation (modeling) and random fractals for art. Fractal generation used for modeling is part of realism in computer graphics.[2] Fractal generation software can be used to mimic natural landscapes with fractal landscapes and scenery generation programs. Fractal imagery can be used to introduce irregularity to an otherwise sterile computer generated environment.
Fractals are generated in music visualization software, screensavers and wallpaper generators. This software presents the user with a more limited range of settings and features, sometimes relying a series pre-programmed variables. Because complex images can be generated from simple formula fractals are often used among the demoscene.[3] The generation of fractals such as the Mandelbrot set is time-consuming and requires many computations, so it is often used in benchmarking devices.[4]
The generation of fractals by calculation without computer assistance was undertaken by German mathematician Georg Cantor in 1883 to create the Cantor set.[5] Throughout the following years, mathematicians have postulated the existence of numerous fractals. Some were conceived before the naming of fractals in 1975, for example, the Pythagoras tree by Dutch mathematics teacher Albert E. Bosman in 1942.
The development of the first fractal generating software originated in Benoit Mandelbrot's pursuit of a generalized function for a class of shapes known as Julia sets. In 1979, Mandelbrot discovered that one image of the complex plane could be created by iteration. He and programmers working at IBM generated the first rudimentary fractal printouts.[6] This marked the first instance of the generation of fractals by non-linear creations laws or 'escape time fractal'.[7] [8] Loren Carpenter created a two-minute color film called Vol Libre for presentation at SIGGRAPH in 1980.[9] The October 1983 issue of Acorn User magazine carried a BBC BASIC listing for generating fractal shapes by Susan Stepney, now Professor of Computer Science at the University of York.[10] [11] She followed this up in the March 1984 Acorn User with “Snowflakes and other fractal monsters”.[12] Fractals were rendered in computer games as early as 1984 with the creation of Rescue on Fractalus!. From the early 1980s to about 1995 hundreds of different fractal types were formulated.
The generation of fractal images grew in popularity as the distribution of computers with a maths co-processor or floating-point unit in the central processing unit were adopted throughout the 1990s. At this time the rendering of high resolution VGA standard images could take many hours. Fractal generation algorithms display extreme parallelizability. Fractal-generating software was rewritten to make use of multi-threaded processing. Subsequently, the adoption of graphics processing units in computers has greatly increased the speed of rendering and allowed for real-time changes to parameters that were previously impossible due to render delay.[13] 3D fractal generation emerged around 2009. An early list of fractal-generating software was compiled for the book titled Fractals: The Patterns of Chaos by John Briggs published in 1992.[14] Leading writers in the field include Dietmar Saupe, Heinz-Otto Peitgen and Clifford A. Pickover.
There are two major methods of two dimensional fractal generation. One is to apply an iterative process to simple equations by generative recursion.[5] Dynamical systems produce a series of values. In fractal software values for a set of points on the complex plane are calculated and then rendered as pixels. This computer-based generation of fractal objects is an endless process. In theory, images can be calculated infinitely but in practice are approximated to a certain level of detail.[15] Mandelbrot used quadratic formulas described by the French mathematician Gaston Julia.[16] The maximum fractal dimension that can be produced varies according to type and is sometimes limited according to the method implemented. There are numerous coloring methods that can be applied. One of earliest was the escape time algorithm.[16] Colour banding may appear in images depending on the method of coloring used as well as gradient color density.
Some programs generate geometric self-similar or deterministic fractals such as the Koch curve. These programs use an initiator followed by a generator that is repeated in a pattern. These simple fractals originate from a technique first proposed in 1904 by Koch.[17]
The other main method is with Iterated Function Systems consisting of a number of affine transformations.[18] In the first method each pixel in a fractal image is evaluated according to a function and then coloured, before the same process is applied to the next pixel. The former method represents the classical stochastic approach while the latter implements a linear fractal model.[19] Using recursion allowed programmers to create complex images through simple direction.[20]
Three dimensional fractals are generated in a variety of ways including by using quaternion algebra.[21] Fractals emerge from fluid dynamics modelling simulations as turbulence when contour advection is used to study chaotic mixing. The Buddhabrot method was introduced in 1993. Programs might use fractal heightmaps to generate terrain. Fractals have been generated on computers using the following methods: Menger sponge, Hypercomplex manifold, Brownian tree, Brownian motion, Decomposition, L-systems, Lyapunov fractals, Newton fractals, Pickover stalks and Strange attractors.
Many different features are included in fractal-generating software packages. A corresponding diversity in the images produced is therefore possible. Most feature some form of algorithm selection, an interactive image zoom, and the ability to save files in JPEG, TIFF, or PNG format, as well as the ability to save parameter files, allowing the user to easily return to previously created images for later modification or exploration. The formula, parameters, variables and coloring algorithms for fractal images can be exchanged between users of the same program. There is no universally adopted standard fractal file format.
One feature of most escape time fractal programs or algebraic-based fractals is a maximum iteration setting. Increasing the iteration count is required if the image is magnified so that fine detail is not lost. Limiting the maximum iterations is important when a device's processing power is low. Coloring options often allow colors to be randomised. Options for color density are common because some gradients output hugely variable magnitudes resulting in heavy repetitive banding or large areas of the same color. Because of the convenient ability to add post-processing effects layering and alpha compositing features found in other graphics software have been included. Both 2D and 3D rendering effects such as plasma effect and lighting may be included. Many packages also allow the user to input their own formula, to allow for greater control of the fractals, as well as a choice of color rendering, along with the use of filters and other image manipulation techniques. Some fractal software packages allow for the creation of movies from a sequence of fractal images. Others display render time and allow some form of color cycling and color palette creation tools.Standard graphics software (such as GIMP) contains filters or plug-ins which can be used for fractal generation. Blender contains a fractal (or random) modifier. Many stand-alone fractal-generating programs can be used in conjunction with other graphics programs (such as Photoshop) to create more complex images. POV-Ray is a ray tracing program which generates images from a text-based scene description that can generate fractals. Scripts on 3ds Max and Autodesk Maya can be used. A number of web-based interfaces for the fractal generation are freely available including Turtle Graphics Renderer.[22] Fractal Lab can generate both 2D and 3D fractals and is available over the web using WebGL.[23] JWildfire is a java-based, open-source fractal flame generator.[24] Mandelbrot Fractal is a fractal explorer written in JavaScript.[25] Fractal Grower is software written in Java for generating Lindenmayer Substitution Fractals (L-systems).[26]
Because of the butterfly effect, generating fractals can be difficult to master. A small change in a single variable can have an unpredictable effect. Some software presents the user with a steep learning curve and an understanding of chaos theory is advantageous. This includes the characteristics of fractal dimension, recursion and self-similarity exhibited by all fractals.
There are many fractal generating programs available, both free and commercial. Notable fractal generating programs include:
Most of the above programs make two-dimensional fractals, with a few creating three-dimensional fractal objects, such as mandelbulbs and mandelboxes. Mandelbulber is an experimental, cross platform open-source program that generates three-dimensional fractal images.[27] Mandelbulber is adept at producing 3D animations.[28] Mandelbulb 3D is free software for creating 3D images featuring many effects found in 3D rendering environments.[29] Incendia is a 3D fractal program that uses Iterated Function Systems (IFS) for fractal generation.[30] Visions of Chaos, Boxplorer and Fragmentarium also render 3D images.
The open source GnoFract 4D is available.[31] ChaosPro is freeware fractal creation program.[32] Fraqtive is an open source cross platform fractal generator.[33] MandelX is a free program for rendering fractal images on Windows.[34] WinCIG, Chaoscope, Tierazon, Fractal Forge and Malsys also generate fractal images.