Fractals/Iterated function systems
Iterated Function Systems (or IFS) is the name given to a method for calculating fractals based on a number of contractive affine transformations.
Michael Barnsley did a lot of work on this type of fractal, including naming it.
Australian mathematician John Hutchinson (who called the system a "Multiple Reduction Copy Machine" or MRCM), also contributed to the field.
The Basic Method
There are quite a few variations on this method, but the basic idea is still the same.
- Define a number of contractive affine transformations in the unit square (these are also known as "Hutchinson Operators").
- Insert points at random positions into the unit square (or another initializing region of R2)
- Make a random selection from the list of transformations, and apply it to the point.
- After some run-up number of iterations, begin drawing the points into an accumulation buffer.
- Continue inserting points until the desired coverage (or quality) is achieved.
- The accumulated values will usually need a log-transform to bring them into good viewing range.
- Sorting the positions of, and resampling the points into an image using a filter kernel can give a better resulting image but is a lot more costly in terms of memory and computation.
Affine transforms are a geometrical construct that comprises translation, rotation, scaling and shear in 2 or more dimensions. A 2-dimensional affine transform can be conveniently stored in a 3x3 matrix for the transformation of homogeneous 2D points. These transforms are applied by simply multiplying the point's position by the matrix.
The flame fractal is quite similar to IFS but adding non-linear transformations, not just affine ones.