ICONS
this is a simple program to generate images like the ones shown in the Book "Symmetry in Chaos" by Michael Field and Martin Golubitsky.
The latest version can be found at
symmetrichaos.sf.net
THEORY
The program generates "strange attractor" fractals, meaning:
Take the complex number x and a formula that takes a complex number and spits one out. Not repeatedly apply this function to your complex x ( x_n+1 := f(x_n) ) and make an quantisated image of the probability distribution of the x-es you get.
Of course you'll only get interesting results with the right kind of formula. This program currently implements eactly one such formula. The one published in "Symmetry in Chaos".
FEATURES
The programm has all the features that other fractal generators I found didn't have, namely:
- hit counter with more than one byte (I use 4 bytes)
- nice palette editor
- true color palette
- specification of the starting point
- support for the non-polynomial term
- oversampling of pixels
USAGE
Because the program currently knows only 1 formula, it's quite easy to use but I'll explain anyway.
When the program starts the control window opens. The window with the fractal will not appear until you started an actual caluculation.
The control window has the palette editor at the top. Below on the left is the color editor. This editor changed the currenlty selected color. The palette editor allows you to create color gradients. this gradient gets stretced so that pixels never hit have the color on the left and the pixels with the maximum hit count have the color on the right. All the pixels with intermediate hitcounter get an intermediate color.
You define the gradient by inserting control points by right clicking at the position where is should appear and the defining the color at this point. Left clicking selects one control point and then you can define it's color. Right clicking on a selected control point allows you to delete it. Left clicking and draggin allows you to move the point.
Below the color editor is the status field. It contains the current number of iterations for the image and the maximum hitcount over all the pixels.
The 2nd column contains the parameters for the fractal. It's the nature of fractals to behave unpredictable, so I can not wxplain what the parameters control, except for Degree and Omega. Degree controls the number of rotation symmetries the fractal has and Omega changes how far from mirror symmetric. All values not equal to 0 will result in an fractal that has no mirror but only rotational symmetricies.
Next column: On the top are a few values that change the behaviour of the palette. The checkbox allows you to switch off the stretching of the palette. If the box is untaged the value in the "Max Hits" input field is taking for stretching instead of the actual one. "Pal. Gamma" allows you to change the way the hit-values are distributed ofer the range of the palette. The "Pal. Gamma" is 1 then the value with maxhits/2 hits gets the vale in the middle of the palette gradient, otherwise you move this value left or right inside the palette. This is necessary because there are normally many pixels with relatively low his counters and only a few with high counters. If you now use a linear palette you need to put a lot of control points at the left side of the gradient to have an even color distribution in the image.
Iterator parameter control the size of the image. Size is the pixel size of the created image. It is always square so your result will be size times size pixels. Scale scales the fractal inside the drawing area. Some of the fractals are relatively small, others are big. So this field allows you to make themm fill your created image. Oversampling defines how many samples are taken per pixel. The actual sample count is the number squared. A by one bigger number in here requires 4 times a much memory and even more time to generate an image of the same "smoothness".
Now the buttons: Save and Load Par. allows you to load and save your current parameters. The 2.nd Column and the palette including "Palette Gamma" is saved.
"Sv. Image" allows you to save your current image on the harddisc. The format is png.
"to Backgr." makes the image you currently see the background image. The background image will be visible at every pixel that never got hit. The background image can only be deleted by quiting the program. This option if useful if you want to overlay serveral fractals. As an example load 5.14_.dat start it. You get one third of an fractal. Stop, change iterator point, make to background, change palette to red, clean and restart, ....
Update transferes the current parameter set to the interator window, only then they are active. On the first start the parameters are automatically transfered but later on you need to do this by yourself.
Clean resets all the hitcounters to 0
Quit quits the program
Start and Stop starts and stops the calculation.
When you start calculating another window openes. This one contains the fractal. To not waste too much time on screen updates I use the following algorithm: make 1000 or so iterations, update one line, repeat. This is quite fast. Even on my 400 MHz Celeron 20,000,000 Iterations are a matter of seconds. When the iteration is not active, ther is a cross in the scream showing the current position of the iterator. The position is changed when you click inside this window. This is necessary to render 5.14_.dat correctly.
OK that's it. I hope this explains all that this neccessary. Have fun
Sorry for all the typos :-)
Andreas
