In case anyone hadn't noticed, I have recently been mucking around with creating fractals using a program which I wrote myself. The original motivation for my program was a software project (for university) to practice using an interface called MPI. Using MPI can speed up processing by as many processors as you have available, especially for highly detailed images (for example a quad core machine can generate the image close to four times as fast).
My program uses the fractal flame algorithm, which is a member of the iterated function system (IFS) class of fractal algorithms. It takes a histogram of the output points from a two-dimensional chaotic attractor and takes its logarithm to generate the final image.
An attractor is a set to which a dynamic system converges to after sufficient time; i.e. points that get close enough to the attractor remain close even if slightly disturbed. An attractor can cause convergence to a point, a curve, a surface, or in the case of chaotic attractor, a complicated set with a fractal structure.
Adobe After Effects, Apophysis and the Gimp are notable programs which also use this algorithm. Apophysis and the Gimp are free, (and can work on windows) for anyone who would like to try using them. Wikipedia has some good information on the topic, and the paper I have based my program on can be found here: [link]
I have had a couple of people ask me whether I will distribute my fractal flame program. At the moment, I'm not planning on it, as it is still a work in progress. It is not exactly user friendly at the moment, as it is command line only, and generates only random images (no useful user interaction). I have a lot of cleaning up to do, and improvements to make before I would even consider this.
Things I still want to do:
Add colour [done]
Add gamma correction (fix the brightness of the output as using colour will muck it up)
Make some kind of user interface. I'm thinking of using some kind of adaptive algorithm where you can choose which image is better looking, and the program will then generate similar images. What I do NOT want to do is have the user manually adjust all the function coefficients and parameters - there are at least 49 * 10!
Optimise for speed
Maybe see if I can get it running on a GPU (Graphics Processing Unit). GPUs have a lot more parallel processing capability than your regular CPU (Central Processing Unit)










