my home page
fractals.ifs.algorithm






To create this images four affine transformations (see maths here) where used. The final image, was created using these:


To select this values the I wrote a small application that randomly created thousands of IFS images. To quickly discard those transformations creating disperse attractors, the application only used those random transformations with a contracting coefficent smaller than 1.5. This images where, of course, low-resolution and low quality (low number of iterations). You can see some of them just below the final image here.

The final image is centered arounf the origin, and the covered surface is 6x4.5 squared units.

The color of the image is decomposed in the hue and his intensity. As explained, the images do not just show the attractor, but his density. So, for the color intensity, the density of the attractor was choosen. In fact, it is the square root of the density normalized to the maximun/minimun value over the image. The square root was not choosed for any mathematical reason; it was just used to adjust the contrast of the image in the image-synthesis part (where the colors are kept in floating point), to avoid crapy manipulation in Photoshop using 8 bit precision.

The color was a bit more complicated to create. Actually, it stores important information about the dynamics happening on the attractor:

Each point in the attractor is accessed from another given point of the attractor by the application of one of the transformations used, his "preimage" (if these transformations overlap, there is more than one preimages exist). In other words, each point in the attractor can be identified by the symbolic secuence of transformations used to get that point from the original one. This sequence is called the "address". This address, expressed in the correct base (four in my case, because I selected four transformations), defines a number between 0 and 1. The coloring of this images was done based on that number. Each new point on the orbit generated a color based on his actual address, and the color was accumulated on the plane using a 5%-95% blending with the previously accumulated color.

This color was multiplied by the previously explained intensity value to get the final color. To get a color based on the address of a point, a sinusoidal function was used for each color component (red, green and blue):

red = 0.4 + 0.25*sin( 0.5 + address )
green = 0.6 + 0.25*sin( 0.9 + address )
blue = 0.7 + 0.25*sin( 1.3 + address )


This color was desaturated in a 30% (mixed with his grey-level version). Finally, a "glowing" postprocess effect was done to enrich the visual quality. This effect is responsible for the light emmission effect on some parts of the image (the brighter ones). To get it, the image was low-pass filtered (a gaussian filter) and added back to the originial image in a 50% proportion.





iņigo quilez 2003