Chaotica is an environment for creating and rendering fractal art. The most fundamental trait of a fractal image is geometric recursion, and the resulting "self-similar" structure where a certain pattern or design can be seen on many different scales.
This is often seen in nature, as for example in plants and geographic features:
An Iterated Function System (IFS) is a particularly powerful mathematical model for making fractal images, with an extremely (inconceivably!) large design space, i.e. it can create an enormous variety of unique and interesting images.
In the following sections, the IFS model in Chaotica is introduced, and the role of imaging settings in making great fractal art explained.
IFS and iterators
The IFS process can be simply described by the following diagram of a feedback system:
The output of some system (usually referred to as a "black box", to deliberately abstract its complicated inner workings) is fed back into its input, forming a feedback loop (or system).
Feedback loops are also commonly found in nature, and if you've ever heard the effect of placing a microphone near an amplified speaker or seen the effect of pointing a video camera at its output display, you have already experienced two common behaviours of feedback systems:
Explosion / unbounded growth
This is when the system undergoes a net gain in energy with each cycle, causing the process to spiral out of control and produce an aesthetically displeasing result.
Bounded / chaotic convergence
This is when the system undergoes a net energy loss, and remains stable (but chaotic) in a bounded range. This is what we would like to achieve for our bounded images.
In Chaotica the IFS is comprised of one or more iterators, which are themselves comprised of three parts:
Returns a new position given an input position, according to some function or program.
Chaotica implements a special transform for flam3/Apophysis support: a weighted sum of geometric transforms (called "variations"). Pre- and post-variations, which are respectively applied before and after the normal ones, behave a little differently: they applied sequentially rather than as a weighted sum, a curious artifact of the flam3 IFS model.
Determines the output colour from an iteration.
For the flam3 IFS, the shader corresponds to a blending process where the used palette location is moved towards or away from a specified location; the more often that iterator is selected (by the selectors in the IFS), the more often its shader will move the palette location towards its preferred location (effectively giving local structure in the fractal that colour).
Determines which iterator to use next in the iteration chain.
For the flam3 IFS, this is a table of probabilities for each iterator in the IFS.
Imaging settings are the settings which control the final colour reproduction from the raw IFS output. It is essential to control the overall brightness and contrast for a high quality result, and this requires some artistry in finding the right combinations of colours in the gradient, and shaping the result with the colour response curves.