Spirofractal is a program that generates Fractal, Strange attractor, and Cellular Automata images, either completely automatically and at random, or based on parameters you set up. The images can be changed either using the menu options or using keyboard short cuts. For copyright and distribution information please click here.
You only need use the Spirofractal program itself if you would like to control the images it produces in some way. Otherwise you may as well just run the Spirofractal screen saver.
Spirofractal generates many different kinds of pattern. There are 10 built in pattern types:
C.A.T fractals, (often called I.F.S. fractals);
Sierpiński fractals (a highly restricted subset of the C.A.T. fractals);
Complex attractors (often called symmetric icons) - strange attractors based on complex polynomials;
Quadratic attractors - based on quadratic real polynomials in two variables;






As well as the 10 built in pattern types, with an expert registration for Spirofractal 4 you can define your own pattern types using the pattern maker. With any Spirofractal registration you can use the extra patterns that can be created with the pattern maker.
Although there are only ten basic types of pattern in Spirofractal (ignoring the pattern maker patterns), these types each cover a huge range of possibilities. Spirofractal has a large range of options which can be used to modify these images, sometimes changing the pattern out of all recognition.
I hope you find that Spirofractal is artistic. Like human artists Spirofractal can have times when it is not very inspired, or gets into a rut, and other times when it produces a whole series of stunning images. Don't expect the program to constantly produce its best work, and be patient - it often seems to take a minute or two for it to get into its stride!
Spirofractal version 4 introduces a host of new pattern types and special effects, and also runs faster than earlier releases (much faster in some cases).
If you are mathematically inclined and have an "expert" registration, you can add new patterns by defining your own formulas to create new pattern types. With the basic registration you can use any of the thirty or so new predefined pattern types using formulas. Formulas you create are compiled into near optimal machine code at run time (tailored to your specific processor!), so they perform just as well as the "built in" pattern types. The formula processor contains supports a wide range of functions and operators for both real and complex variables.
There are many new effects for set and basin boundary fractals - for example you can explore the effect of using quaternion and hypercomplex numbers instead of "ordinary" complex numbers, or of using complex powers rather than integer powers. You can also create tilings of set fractals, reminiscent of designs by Escher, or distort a pattern by using the "straighten" effect.
As well as the smoothly graduated palettes of earlier versions you can now have striped and palettes that use only two or three colors. These can produce some very striking designs.
Color cycling, or palette animation is introduced. This is particularly effective with the new plasma pattern type.
Split Screen mode allows you to view a range of similar small similar images rather than one large image. The effect may be similar to a tiled image, or a patchwork quilt depending on the pattern type. You can also use this mode to help discover interesting patterns.
As well as all that there are numerous other minor enhancements that increase the flexibility and power of Spirofractal.
![]() |
| A flower-like 3D attractor |
Spirofractal version 3 has the same nine basic pattern types as the 2.x releases. However several new special effects have been added which greatly increase the range of patterns that are produced.
Notable are several types of transformation, called Spatialisers which convert the predominantly 2D images of the earlier versions into 3D images, an example of which is shown on the left. You can explore these 3D images by rotating them and viewing from different angles.
There is also a effect which works with almost all pattern types which turns the pattern inside out (also used in the image on the left).
The options for converting images to true color have been enhanced - the conversion is now much faster, and there are filters which you can use to change or enhance images in various ways. The new 3D images can use lighting effects to improve the 3D effect.
There are now some configuration options for the screen saver.
There is an option to save an image in various formats,including Windows start up screens.
There are new types of animation. Animation can now be controlled instead of being random, and you can save a series of animation frames which can then be imported into a GIF animator such as Animation shop or Ulead GIF Animator.
There are also improvements to the performance of most pattern types. The search for strange attractors is somewhat more efficient, and searches over a wider range of values.
The program works better in 256 color mode
The program menu has been rearranged as the two main options had become rather top heavy.
Initially Spirofractal draws the whole image to make best use of the available screen. (This is not that easy as it is very difficult to know exactly how big some patterns will be.)
However, one of the best features of Spirofractal is that you can zoom in on any part of an image by double clicking on it. This is especially interesting with fractals (including sets and basin boundaries). Spirofractal will redraw the pattern four times larger in each direction (or eight for sets, and, on first zooming in, enough to show one tile for tiles), keeping the point you clicked on in the same place on the screen. You can do this as many times as you like. Eventually, rounding errors will probably cause the fractal structure to be lost, but you can normally do this many times without any problems. This will uncover more and more, and smaller and smaller, versions of the total image hidden in various places. Unfortunately the fractal drawing will be slowed down significantly each time you zoom in because of the need to calculate points that are no longer displayed (for patterns other than sets), or the fact that you will normally zoom in on points near the boundary (for sets).
To return to normal magnification you can right click anywhere on the image, or just select any of the options that will change the fractal in some way.
You can also control zooming in more accurately by the following method:
You can also use the keyboard to adjust the area you are viewing.
|
Left Arrow Right Arrow Up Arrow Down Arrow |
Each of these keys scrolls the display by 10% in the appropriate direction. Note that it is your view-point that is shifting (as when editing a document), so that the patterns will move in the opposite direction. If you press the Ctrl key at the same time then the display moves by a whole page. |
| Page Down | This increases the magnification by 20%, keeping the same point at the centre of the display. |
| Page Up | This reduces the magnification by 20%, keeping the same point at the centre of the display. This may be useful if Spirofractal has accidentally chopped part of a pattern off the edge of the screen. It is also a nice option to use in tile mode, as it allows you to reduce the size of each tile. It's also quite interesting on some of the Jigsaw mode options for Set Fractals as far outside the set Moiré patterns start appearing. |
The zoom facility is not available with cellular automata, and does not work well with "modified orbit" images, or "Orbit Attractors".
![]() Normal view - small stars appear on the arms of the large star. |
Zooming in twice on small star at top right reveals yet smaller stars growing on its arms. |

If you are viewing multiple images (when you have Split Screen turned on), then the zoom commands work in a slightly different way:
There is one other mouse command, available only when displaying sets. If you right double click then the set will be changed to show a set perpendicular to the one being currently displayed. This is most interesting when something similar to a Mandelbrot set is being displayed. Right double click somewhere near a boundary (inside the set), particularly near a border between two different blue regions will usually generate a very interesting fractal. In order to be able to do this more accurately you may wish to zoom in on part of the Mandelbrot set first. If you do this remember to keep the shift or control key pressed at the same time as doing the double click, otherwise the zoom will be cancelled and you will not get the intended fractal.


All the orbit pattern types currently supported by Spirofractal produce images that are basically 2D, so far as the underlying maths is concerned. Spatialisers transform the images into 3D objects, by creating a coordinate in the third dimension based on some property of the image. The resulting 3D image is then projected onto the screen. There are three ways this can be done, two which are designed for speed (to permit 3D animation), and one which is designed to produce enhanced image quality. With this third option (a simple ray trace), a control pad appears on the screen, which allows you to rotate the image freely. Sometimes the most interesting part of the image is hidden, and it is worth viewing interesting patterns from several angles. The pictures at right and left show different views of the same 3D attractor. Unfortunately the image has to be redrawn from scratch each time it is rotated. 3D images take quite a bit longer to draw than normal images, partly because of the extra calculations necessary to convert the image to 3D, and partly because some points are hidden behind others.
You can also view 3D images in cross-section by positioning the screen inside the object. To do this you use the Geometry... command.

Initially most of these 3D images will still look fairly flat. However the True Color Image option will then add shading to the image, dramatically increasing the 3D effect. You can control the strength and color of the lighting for these 3D images with the Edit Geometry... command. If you have a very fast computer (or even if you don't and you are very patient), you can use choose to have this done in real time as the image is generated. This slows down the generation of the image by about 20%, and 3D images are in any case only generated at about half the speed of 2D ones.
If you want to control Spirofractal rather than letting it generate patterns for you, it will probably be worth getting used to at least some of the keyboard short cuts. These are summarised in the tables below. Every short cut is the same as the mnemonic for the corresponding option in the menu, and the documentation for each option also lists the mnemonic in brackets after the heading for the option. You may also find these tables a useful index into the rest of the documentation.
You may find that a few short cuts do not work, but instead switch to other programs. This will happen when a program has installed itself with a short-cut key. If you don't use that short-cut normally, you will be able to disable it by editing the properties of the program's short-cut entry in the start menu
| Ctrl+A | Delta Arg Spatialiser |
| Ctrl+C | Cone Spatialiser |
| Ctrl+D | Mod Delta Spatialiser |
| Ctrl+E | Eccentric Spatialiser |
| Ctrl+F | Flat Spatialiser (none) |
| Ctrl+G | Geometry |
| Ctrl+H | Height Map |
| Ctrl+I | Inside Color |
| Ctrl+K | Split Screen |
| Ctrl+M | Delta Mod Spatialiser |
| Ctrl+O | Orbit trails |
| Ctrl+P | Plasma Clouds |
| Ctrl+Q | Quarry Map |
| Ctrl+R | Reset Color |
| Ctrl+S | Old Arg Spatialiser |
| Ctrl+V | Vector Arg Spatialiser |
| Ctrl+W | Wild Spatialiser |
|
Backspace Ctrl+Z Alt+Left |
Previous Image |
|
Tab Ctrl+Y Alt+Right |
Next Image |
| Ctrl+Shift+B | Hybrid Basin |
| Ctrl+Shift+C | Hypercomplex |
| Ctrl+Shift+E | Escher effect |
| Ctrl+Shift+H | Hypercomplex effect |
| Ctrl+Shift+I | Inside Rule |
| Ctrl+Shift+M | Monochrome Colors |
| Ctrl+Shift+P | Primary Colors |
| Ctrl+Shift+Q | Quaternionseffect |
| Ctrl+Shift+S | Straighten effect |
| Insert | True Color Image |
| Ctrl+Insert | Palette Filtered Image |
| Ctrl+3 | Allow 3D on Timer |
| Ctrl+8 | Animate Colors |
| Ctrl+Shift+1..5 | Film Speed |
| F5 | Enhance Set Fractal |
| F6 | Real-time True Color |
| Ctrl+F6 | Filter Previews |
|
F7 Ctrl+F7 |
Edit Colors |
| F8 | Save Animation |
| Ctrl+F8 | Animation Options |
| F9 | Save Image |
| Ctrl+F9 | Add Picture |
| F11 | Full Screen |
| Ctrl+F11 | Full Size |
| Ctrl+F12 | Delete Picture |
| Ctrl++ | Increase warp |
| Ctrl+- | Decrease warp |
| Ctrl+Shift+ | Raise warp Limit |
| Ctrl+Shift- | Lower warp Limit |
In the following information the corresponding keyboard short cut is shown in parentheses after each menu option.
The options in this menu allow you to completely change the image. Most of the various options can be combined together in any way you like.
The first eleven options select between the different modes for generating patterns and also cause the pattern to be randomised:
C.A.T. (and Sierpiński) fractal images are generated by starting from an initial point and repeatedly selecting one from a number of what are known as contracting affine transformations. As each point is calculated the corresponding pixel on the screen is plotted. Over time, usually a second or two, this will build up a fractal image. The pixel is colored according to how often it has been hit.
This mode gives Spirofractal total flexibility in generating C.A.T. fractals.The fractal transforms will generally involve shear and rotation, which increases the possible complexity of the patterns.
Sierpiński was the mathematician who discovered the first fractal, the Sierpiński triangle.
This mode uses also uses C.A.T transforms, but ones created in a different way. The transformations selected when this mode is selected are all similar to the one used to generate the Sierpiński triangle. These transformations are created by picking a fixed point and decreeing that any other point is moved to a point that is a fixed proportion (in Spirofractal between -0.6 and 0.6) of the way along the line joining the two points. Compared to the regular method of randomising C.A.T. transformations a very reduced set is available when this mode is used. Any Sierpiński fractal is a C.A.T. fractal where none of the transforms contain any shear or rotational component, and the amount of contraction is the same in all directions. Sierpiński constructions tend to become dull if you add too much rotational symmetry.
In Spirofractal 4 I have added slightly broadened my definition for this type of Fractal, to allow the contractions to rotate about an angle that is not connected with the symmetry desired. This option can now produce some beautiful Spiral fractals. For best results with these fractals, select exactly two C.A.T.s (you can see how many there are by choosing the edit option). Turn off any effects except Rebalanced Dice which you should select, remove all symmetry, and randomise a few times.!

Randomly generated Sierpiński triangle and a pentagon using the same transformation.
Strange attractors of all types are constructed in a similar iterative way to C.A.T. fractals but iterating only a single (though quite complex)formula, rather than a randomly chosen one. Pixels are once again colored according to how often they are hit. Depending on the exact function used, this process may converge on a few isolated points, zoom off to infinity, converge on a simple curve, or (not very often!) generate an interesting or even beautiful pattern. The type of the formula used is different for each of the three kinds of attractor.
The maths underlying all the attractors is a little more tricky than for fractals. If you would like more details then you will find more information here. Complex attractors are generated by iterating a complex polynomial. The polynomial is of a type which will usually generate a symmetric * image when iterated. The degree of the polynomial (that is the highest power used) determines the rotational symmetry of the image.
*i is chosen for the mnemonic for this option as a tribute to the original complex number.
(*In fact the images are not always symmetric, for reasons I do not really understand, but probably mainly because some formulas have several "islands" which each give rise to a different attractor. Most of the interesting images are symmetric, unless you remove all the rotational symmetry, when patterns similar to quadratic attractors are generated.)

An unusual complex attractor with a high degree of rotational symmetry.
This mode generates patterns by iterating the most general quadratic real polynomial in x and y with randomly chosen coefficients. The iteration works by evaluating the polynomial for the current x and y position, then assigning the value of the polynomial to x, and the previous value of x to y. The images produced by this operation are generally not symmetrical, and quite often look a little like a strangely draped veil. The "Hénon Attractor" is a famous case of this mode of operation.

Hénon attractor as realised by Spirofractal, and a typical veil-like quadratic attractor.
Tiles differ from most other patterns generated by Spirofractal in that they can be seamlessly joined together to cover the plane. They are created with strange attractors that use trigonometric functions. This means that if the parameters are correctly chosen the pattern generated will repeat periodically. In fact Spirofractal constrains the function used so that all the points lie in a small square, or rhombus (depending on the symmetry), and then it repeats the pattern to build up a tiled image that fills the screen.

Typical hexagonal and square tile patterns. It is worth allowing plenty of time for tiled patterns to be generated.
This option generates fractal patterns using a generalisation of the process that creates the Mandelbrot and Julia sets. These patterns can take a very long time to generate and may not run well on slow computers.
In order to calculate the set Spirofractal calculates two complex numbers for each point, which it then feeds into a simple iterative process. If the numbers this generates stay close to the origin, the point is in the set. If not it is outside. Spirofractal colors the point a shade of blue (unless you use the Inside Color option) if the point is in the set. The exact shade of blue depends on whether the point ends to a constant value, or whether it tends to oscillate between 2,3,4... values (unless you use the (unless you use the Inside Rule option). Points outside the set are colored according to the number of iterations it took to prove the point was out of the set (or according to the value of the complex numbers when it was shown the point was outside the set in jigsaw modes). Until the point gets far enough from the origin, or repeats a number already generated by the sequence, it is not possible to be sure if the point is in the set or not. These points are left black.

The Mandelbrot set, and its equivalent using z4.
![]() A typical Basin Boundary fractal. |
Basin boundary fractals are very similar in some ways to Set fractals. As with set fractals Spirofractal calculates two complex numbers for each point, and once again feeds them into an iterative process. However, this process generates numbers which converge almost everywhere, to one of the roots (solutions) of a polynomial - the iteration finds the roots of a polynomial using Newton's method of approximation. Different points converge to different roots. The regions which converge to a particular root have a boundary that is fractal. Spirofractal colors the screen according to how long it takes for convergence to take place, and (when jigsaw color is in use), according to which root is found. Set fractals are also really a kind of Basin Boundary fractal, where the boundary is attraction to infinity. Spirofractal only uses simple polynomials for this type of pattern, and there are are almost unlimited other possibilities.
These patterns can take a long time to generate.
![]() Ant automata patterns sometimes look a little like C.A.T. fractals, but the way they change as they develop is quite different. |
Ant automata are a type of cellular automaton. They are based on a well known mathematical problem known as Langton's ant. The version in Spirofractal is rather different from the original in order to make it possible to generate interesting patterns. The basic idea is that there are a number of "ants" which move round the screen one pixel at a time. Each time they pass through a pixel they change direction based on its current color, and the color of the pixel changes to the next color. Varying the rules for how they change direction causes different patterns to be generated. Click here for a more detailed explanation.
Cellular automata are a very simple form of artificial life. They are sometimes known as Wolfram cellular automata, but when the term "cellular automata" is used unqualified, it usually refers to this type of automaton. The basic idea is to start with a group of cells,represented by pixels on the screen, some of which are dead, and some alive. Depending on its state and the state of the cells around it, each live cell can either die or survive into the next generation, and each dead cell can stay dead or be born. For more information click here.

Cellular automata often contain triangular structures reminiscent of the Sierpiński triangle.
![]() A typical symmetric plasma pattern |
Plasma clouds are a type of random fractal which are often used to simulate cloud formations or landscapes (try the effect of the height and quarry map options on a plasma cloud). They are created by selecting colours at random at four corners of a rectangle and then creating a smooth gradient between the colors. The process is repeated on progressively smaller rectangles, reducing the amount of color variation allowed at each step. Spirofractal generates symmetric plasma clouds by imposing the required symmetry on the pattern at each step. Spirofractal also always forces the opposite edges of plasma clouds to match up, so that they will tile nicely.
![]() This is an example of one of the "Crazy Paving" Patterns |
Other patterns leads to a submenu of all the patterns that are created using the Spirofractal Pattern Maker. These patterns can be created by a variety of methods, usually closely analogous to one of the built in pattern types (though there are at least two types of pattern which do not have equivalents in the built in patterns). These patterns may or may not respond to the rotational symmetry and mirror symmetry commands, depending on how they are created. The effect of jigsaw mode commands and whether spatialisers are available or not will also depend on what pattern type they are related to.
There are some practical consequences of the different mathematics underlying the various kinds of image:
The process of calculating C.A.T. fractals each point also involves only a small number of calculations, based on the results of the previous calculations, and so it is very fast. Using the fractal distortions or the inside out mode will slow things down a little. Ants and cellular automata are drawn even more rapidly because their calculations are very simple indeed. Set and basin boundary fractals may be drawn very slowly, though this will vary a lot depending on the set or boundary being calculated.
The calculations for strange attractors, particularly complex attractors, involve significantly more work than for fractals, especially when a high degree of rotational symmetry is chosen. As a result the display will be slowed down when compared with C.A.T. fractals.
Using a spatialiser will slow all image types that use them a lot, especially if a lot of the image is hidden. Some spatialisers are more expensive than others to calculate.
Surprisingly (because they use a lot of trigonometric functions) tiles are calculated faster than most other other kinds of image (unless you try to run Spirofractal on an old 386 or 486 machine), but this is really because a much smaller image is calculated, which is then drawn repeatedly. If just one tile is drawn (when you have soomed in, then the calculation are much slower than for complex attractors. In any case the fact that the tile usually fills the plane means that many more iterations need to be calculated to get an image with the maximum amount of detail. Tile drawing will slow down significantly the longer it is left running as the benefit of being able to draw multiple pixels for each point calculated is reduced (because not all points cause a color change, and the actual calculations are rather slow.)
Set fractals can usually only be displayed approximately, because it is not always possible to tell how a particular point will behave. Spirofractal iterates each point a certain number of times. Most points will either tend quickly to infinity, or settle into a repeating pattern, but points near the boundary of the set (which is the interesting part!) can take many iterations to do either. Spirofractal leaves points that are not definitely in or out of the set black. At high zoom factors, the limit on floating point accuracy may impact the accuracy of the set.
The most interesting patterns appear when you zoom in on part of the boundary. Unfortunately, the more you do zoom, the slower the pattern will be to appear, because more points take many iterations to classify. It is not so easy to make the image appear gradually as for the other modes. Spirofractal uses various tricks to speed things up such as first displaying a "grainy" image, and then refining it. Unfortunately refining the pattern involves either repeating work already done, (which eventually becomes very slow), or allocating a lot of memory to remember the previous iteration for each point. Spirofractal tries to do the latter, but there may not be enough memory available, especially at high resolutions.
A pattern created by zooming in three times on
part of the Mandelbrot set near the boundary.
C.A.T. Fractals are predictable in the sense that Spirofractal can choose values in advance it is known will create a fractal, and for which it is roughly possible to predict the appearance. This means that Spirofractal can instantly change from drawing one fractal to another.
Strange attractors were originally called strange precisely because they were not very well understood. If there is a simple test for knowing that a particular function will give rise to a strange attractor pattern it is certainly not known to Spirofractal, though it has a few rules of thumb. Spirofractal discovers strange attractors by trial and error. In some cases it can take quite a while to discover whether or not a function does have a strange attractor. Even then it is far from certain it will be interesting. During the course of this searching out strange attractors Spirofractal will sometimes start to plot an attractor, and then realise it is not very interesting. When this happens it will try a new set of possible values, and do this repeatedly until it finds one that works. It would have been possible to suppress this, but some of the images are "near misses" and do have some interest, and I felt it was more interesting to have some of the workings on show. For tiles most values "work" but occasionally a particular choice of values will generate a tile where there is no pattern along the edge, or even no pattern at all apart from a simple shape somewhere within the tile.
Similarly, when drawing cellular automata or ants , Spirofractal will sometimes start to draw an automaton which turns out to degenerate into a stable or repeating pattern, or, if it is an ant, escapes in a straight line. When this happens Spirofractal tries a new rule at random.
Drawing 3D images adds yet another complexity- drawing the pattern from the best angle. Spirofractal really can't do much about this. The default orientation for complex attractors has been chosen to give good results on the whole, but there is no intelligence built into the program for automatically rotating individual patterns.
This option randomises the values used to generate the patterns for all pattern types, but the amount of rotational symmetry and settings for any special effects are not changed. When randomising attractors it may take several attempts to find parameters that generate a genuinely chaotic attractor. When this happens you may see flashing circles or other shapes appear while Spirofractal is searching for a proper strange attractor. A similar problem arises for Cellular automata where some rules generate patterns that are too simple to be interesting.
When generating sets, Spirofractal picks one of four types of image at random:
This is only a small subset of the possible sets of this type. The other sets are not symmetrical, but can be quite interesting, especially in close up. The animate option will show asymmetrical sets near one of the above sets.
When generating basin boundary fractals Spirofractal picks a similar cross section of the complex hyper-plane as for sets, but never the actual Mandelbrot section, as this does not work with basin boundary fractals (unless the "Attractor Singularity" option is on.)
In strange attractor mode this allows you to edit the coefficients of the polynomial being used (and the trigonometric functions for tiles). You may want to do this to try the effect of varying one parameter slightly, or to enter values for a previously known strange attractor. However you are likely to find it easier to generate strange attractors by using the randomise facility. It is hard to predict which values work, except that more or less any values work for generating tiles. For complex attractors the values of the a and b parameters should normally be of opposite sign but numerically close. Small values will tend to produce circles or other simple shapes, usually attractors start appearing when the b value exceeds about 2.2. Small d values will make the pattern closer to having mirror symmetry.
In fractal mode this allows you to edit the parameters in the matrixes used in fractal transformations. You'll need some understanding of contracting affine transformations to be able to do this intelligently. Assuming you do have, here are a few hints that you may find helpful.
When editing the parameters for a transformation you can choose either to enter values for the four quantities a,b,c,d, directly, or to enter values for rotation, magnification and shear. Normally it is easier to understand a transformation from the latter than the former.
If both x and y magnification are large you will get a blurred fractal. Usually it is a good plan to ensure that at least one of the x and y magnification is below 4/n where n is the degree of rotational symmetry. However, the use of shear will affect this. The dialog displays a minimum value, average and maximum value for the contraction of the transformation. If the minimum contraction is sufficiently small then the fractal will normally be interesting. You must ensure that the maximum contraction is less than one. In any case the product of the magnifications should normally be below 0.5.
If both x and y magnification are very small your fractal will tend to resemble a join the dots picture.
If the difference between x and y magnification is very high then your fractal will come to resemble a set of straight lines.
Do not choose a 0 translation component if you are planning to use rotational symmetry. If you do the fractal will be a single fixed point (unless you have more than one base C.A.T. or enable perspective or hall of mirrors.)
In set mode and basin boundary fractal mode you choose two linear transformations of the complex plane which will select a two dimensional subset of the complete Mandelbrot/Julia/Basin Boundary object. In Spirofractal version 4 you can also select a complex multiplier for the symmetry degree to allow non integral powers to be used, values for the constant components used to generate quaternion/hypercomplex fractal images, and you can over-ride the value used for "bail-out".
In Cellular automaton mode (but not ant mode), you can edit the rule used to create the automaton.
For "Pattern Maker" patterns you will be able to edit the parameters, in a similar way as for strange attractors.
If this option is selected when Spirofractal is displaying complex attractors or tiles the function that is iterated is changed slightly to generate an image with mirror symmetry. However, it will often be the case that a particular set of values will give a strange attractor when this option is not selected, but will not when it is, or vice versa. Generally, if the values work with mirror mode, then you can make them work with mirror mode turned off, by making the value of the d term, sufficiently close to 0. However, when a set of values does work with both kinds of attractor the patterns generated will usually be related as you might expect. If the Attractor Singularity option is selected then the function used to generate the attractor will still be changed, but in a different way. In fact when that option is selected all the patterns generated for complex attractors will have mirror symmetry whether or not this option is selected. Conversely, for hexagonal tiles, if the Attractor singularity option is selected, the tiles will only ever have rotational symmetry whether or not mirror symmetry is selected!
If this option is selected when Spirofractal is displaying fractals additional transformations that are reflections in the x-axis of the base and rotational transformations are added. This will make your image have the symmetry of a reflection in a pool of water. It will make images that had rotational symmetry completely symmetric. However, it may make your image less distinct.
For set and basin boundary fractals the mirror symmetry option selects planes of the 4D object that have a line of symmetry.
For pattern maker patterns whether this option has any effect or not depends on whether the pattern forces some parameters to take default values when this mode is in effect. In any case switching this mode on won't have any effect until the pattern is randomised again for these patterns.

The effect of adding Mirror symmetry to a Spirograph like fractal.


The Inside Out option is a special effect that works, in different ways, for every pattern type, except the two types of cellular automata and plasma clouds. It dramatically changes the appearance of patterns and the behaviour of animations.
An example of the inside out effect is shown on the right with the normal image at left. With "Spirograph" like Fractals the effect is often similar to what happens if you draw round the outside of one of the rings instead of the inside!
For Fractals,Strange attractors and Pattern Maker patterns this option works by plotting each point at the reciprocal of its normal coordinates. Points that were near the origin (usually near the centre of the screen) zoom off towards infinity, whereas points near the edge of the screen are brought into the centre. There will always be a small empty ring in the centre of the image. If the original image had a hole in the centre the inside out image will be finite in size. If not the image will stretch out infinitely. Spirofractal tries to calculate the area of the image which will be reasonably dense and interesting, though this is quite difficult, and it may be worth zooming out or in.
For Set Fractals, Basin Boundary Fractals, inside out works a little differently, using the reciprocal of the value normally used, when calculating which points of the Set object to point rather than plotting points at the reciprocal of their normal coordinates (though these will often be the same, for example for Julia Sets).
For Tiles the option works by adding an offset to each point as it is calculated that will bring the centre of each tile to the corner, and vice versa. However, this on its own would not be very interesting since the pattern would merely be displaced assuming it was initially symmetrical. However, moving the point like this affects the position of later points thus changing the pattern. In fact this behaviour was in the previous version of Spirofractal for tiles with square symmetry, where it was enabled with the "Attractor Singularity" option.It now also works for hexagonal tiles, where it subtly breaks the symmetry of the tile.
The inside out option has an interesting effect for Fractals, Set Fractals and Basin Boundary Fractals: when you zoom in, you will find small copies of the normal image, and not, as you might naively expect, the inside out version. In fact there is a perfectly simple explanation for this - locally the inside out option is almost a linear transformation except very near the origin, it is only on the large scale that it is highly non linear. Therefore small areas if the original image will appear more or less unmodified in the inside out version.
For complex attractors this increases the degree of the polynomial, which has the effect of adding another degree of rotational symmetry. However it is quite likely that increasing the rotational symmetry will "break" your current parameters and stop them generating an attractor at all, or cause them to degenerate to creating a circle or straight line (usually a sign that the attractor is not chaotic). When this happens you must either revert to the previous degree of symmetry or try new parameters (probably by randomising). Sometimes a particular set of values works with odd numbered symmetries but not even symmetries, or vice versa. High degrees of symmetry tend to generate fairly uninteresting attractors, and it can take Spirofractal a long time to find a set of values that works. Some strange effects can happen with high degrees of symmetry:
For fractals this adds a degree of rotational symmetry by generating additional transformations that are rotations of the current set. For example if you have a symmetry of 3, the images will often contain triangles. If you increase it once you will get squares, twice you will get pentagons and so on. There is some tendency for the images to become more blurred as you increase the rotational symmetry. If this happens you may like to use the randomise C.A.T.s option a few times until Spirofractal chances upon a transformation that works well. alternatively, you can use the Edit option. The more rotational symmetries you add, the less fractal like your image will become. It will gradually start to resemble a Spirograph image. However, the image is still truly fractal.
If you are in line mode then fractals won't have rotational symmetry, instead the amount of rotational symmetry determines the number of times the transformations are repeated along the line.
For Pattern Maker patterns changing the symmetry will only have an effect if the formulas the pattern is based on make use of the symmetry variable.

The same transformation with three and four degrees of rotational symmetry.
For tiles changing the rotational symmetry works in a slightly different way from the other modes. It alternates the pattern between being based on functions which give rise to square symmetries and functions which give hexagonal symmetries. The first four patterns will not usually have rotational symmetries. After that the pattern will cycle through 16 different tilings. (If Spirofractal did not do this high degrees of symmetry would give rise to very plain tilings.)
For Set and Basin boundary fractals the rotational symmetry determines the degree of the polynomial used, and the patterns generated may or may not have rotational symmetry. For set fractals the rotational symmetry will be one more than it should be if a Julia set is generated. This reflects the fact that the Mandelbrot set for zn has n-1 degrees of rotational symmetry, but Julia sets have at n degrees of symmetry (except the Julia set for 0 which is always a circle of radius one). The same kind of thing happens with Basin Boundary fractals as well.
For Ants the symmetry is limited to 12. For cellular automata the "rotational" symmetry option changes the number of possible states (colors). Low values usually work best for cellular automata.
This removes a degree of symmetry. If you reduce this below triangular symmetry you will get only one symmetry - rotation through 180 degrees. If you combine this with mirror mode you will then get an image with two perpendicular axes of symmetry. If you reduce it again then you will get an asymmetric image. In fractal mode, if you have no rotational symmetry you must either have more than one base transformation, or you must turn on one of these other effects (Perspective, Hall of Mirrors, Mirror symmetry) otherwise your fractal will consist of a single dot.
This option toggles Spirofractal between displaying one large pattern or a number of small patterns with slightly different parameters. When Split Screen mode is turned on successive images, reading left to right and top to bottom, are in fact successive frames in an animation, and the permitted variation between frames can be controlled with the Animation Options option.
The example on the left shows a patchwork quilt created from banked plasma cloud patterns, with banding mode turned on as well.
The number and size of the frames is selected at random. Currently there is no way to select the number explicitly except by turning the mode on and off a few times.
This option only applies in the two fractal modes and will switch to the last used fractal mode if Spirofractal is displaying attractors. This adds another transformation to the basic set of transformations Spirofractal is using. It is initially assigned random values.

Adding another base transformation can sometimes make a remarkable change in the image as this example shows.
This option only applies in the two fractal mode and will switch to the last used fractal mode if Spirofractal is displaying attractors. This removes a transformation from the set of transformations Spirofractal is using. You are not allowed to remove the last transformation.
This option opens a submenu with a number of effects which apply only when fractals are being generated and which change the way additional transformations are derived from the base C.A.T.s in use. Unlike the options in the Fractal Distortions menu the options in this menu do not stop the images from being C.A.T. fractals. If you select any option from this menu when displaying attractors Spirofractal will switch to displaying fractals again.
When this mode is selected the additional transformations that rotational symmetry added are distorted into a spiral form (unless line mode is also selected). When you have a lot of rotational symmetry then this will often cause definite spirals to appear in your image.

Normal and shrunk versions of a typical Spirograph like fractal.
When this mode is selected the additional transformations that rotational symmetry added are distorted by only rotating the matrix component of transformation through half the right amount to generate rotational symmetry, but the translation component by the full amount. This often causes fan like structures to appear in the image.

The same transformation without and with angular distortion. Notice the small fans appearing on the feathers of the large fan.
When this option is selected some of the additional transformations that rotational symmetry added will be randomly missed out, making your image asymmetric. Where your image would have had a high degree of symmetry this will result in missing spokes or "teeth" from your patterns. Sometimes this can yield interesting results.

The Broken teeth option reveals that the rays off the central circle are (of course) flattened versions of the whole image.
When this option is selected some of the additional transformations that rotational symmetry added will be distorted in size by a random small amount, making your image asymmetric.

Zooming in on the size distorted right hand copy of the image would certainly show the gap in the "wheel" appearing in the flattened versions.
This adds a single transformation that creates a small, translated, copy of the image. Usually, but not always, this will have the effect of causing your image to have ever-reducing copies of itself disappearing into the distance. Perspective is added after mirror symmetry, so it will partially destroy the symmetry.

The Spirograph fractal with perspective added.
This adds a single transformation that creates a smaller version of the original reflected in the y axis. Usually this causes a number of ever reducing reflections to appear in the image. If you have both the hall of mirrors and perspective you will sometimes get a constellation of images appearing. Like the perspective option hall of mirrors is added after mirror symmetry.

A simple five pointed star gets the hall of mirrors treatment. The third image has perspective and mirror symmetry as well.
The line option unrolls the rotated transformations and puts them into a straight line instead. However the transformations retain their rotated quality - it is just they are no longer arranged in a circle. Sometimes these images look like birds wings.

The effect of applying Line (and shrink) mode to the angularly distorted Spirograph
This option is only meaningful when Spirofractal is displaying fractals. Normally each transformation used in generating the fractal has the same chance of being selected. If you use this option the transformations are assigned different relative probabilities at random. This will usually have the effect of changing the colors of the fractal, but not changing the shape much. You can use the "Roll dice" option to change the probabilities again. The short cut key (D) toggles the probabilities between Equal, Loaded Dice, and Rebalanced Dice.

Illustration of the effect of using the loaded dice option. Notice how even this aspect of the image is reproduced in the scaled down versions!
This option is only meaningful when Spirofractal is displaying fractals. Normally each transformation used in generating the fractal has the same chance of being selected. If you use this option the transformations are assigned different relative probabilities according to the amount the transformation contracts by. This will usually have the effect of changing the colors of the fractal, but not changing the shape much. However if you have more than one base transformation it can make a dramatic impact, especially with the new type of Sierpiński fractals introduced in Spirofractal 4, as in many cases only a fairly uneven distribution of probabilities allows the full pattern to appear. This option does not always improve images however, as it tends to reduce contrast.

Illustration of the effect of using the Rebalnaced dice option. This fractal is one of the new Sierpinski fractals - amazingly it uses only two transformations. The rebalanced dice option is often essential for this type of pattern.
This option is only meaningful when Spirofractal is displaying fractals. Using it automatically sets the Loaded Dice option, and randomises the probabilities associated with each transformation. If Broken Teeth or Size Distortion are on the effect of those options is randomised as well.
This option opens a submenu with a number of effects which apply only when C.A.T. and Sierpiński fractals are being generated and which alter the transformations Spirofractal uses to generate images so that they are non linear. In each case this is done by first calculating the point a regular linear transformation would plot, and then by multiplying the x and y coordinates of this point by numbers based on some combination of the original and transformed coordinates. The number is always between 0 and 1 and so the pattern is dragged towards the origin in various ways. The exact way this is done is different for every fractal. Spirofractal tries to calculate amounts for the distortion that will give interesting results.
If you select one of these options when Spirofractal is displaying attractors or sets the program will switch to displaying fractals.
In this mode there is no distortion. The image on the left is undistorted, all the images in this section use the same basic fractal.

With this option the distortion is based on the position of the point before transformation. Points furthest from the origin are dragged towards the origin most. This will tend to deform straight lines so that the end points appear bent inwards. However, this effect will be very much disguised by the fact that the transformations may have moved the point a considerable distance.
This distortion may stop the pattern from being truly fractal, as there is a loss of fine scale structure.

With this option the distortion is based on the position of the point after transformation.Points furthest from the origin are dragged most, so once again straight lines are deformed so that the end points appear bent inwards. Images with a lot of rotational symmetry will often look as though they have been reflected in a convex mirror, though in many cases the image will be quite different from the undistorted version. This distortion does not stop the image being fractal.

With this option the distortion is based on a combination of the old and new coordinates. There is a pronounced tendency for circular images to become square. There is also a loss of symmetry, and some parts of the pattern lose fine structure, while others appear to gain more.

With this option the distortion is based on another combination of the old and new coordinates. There is a pronounced tendency for circular images to be distorted into a diamond shape. There is a loss of symmetry. Images using this distortion often look rather spooky.

This distortion uses the original points to calculate the distortion, like Convex 1, but this time the distortion is greater for points nearer the origin, so that the centre of lines is sucked inwards. This distortion often causes tree-like or feather-like structures to appear near the edges of the image which makes them appear more fractal like. However, there is some loss of fine structure.

This distortion is the concave equivalent of convex 2: the distortion is based on the new coordinates of the point and is greater for points nearer the origin.
These four options control the amount of warping allowed and the area it affects. This can dramatically affect the pattern. In Spirofractal 4 the Warp is reset each time you change the transformations used to create an image. However the Warp Limit, which is the maximum amount of distortion anywhere in the plane is permanent. The limit is set fairly high by default, so as to produce a variety of results. However, reducing the distortion may reduce the amount of time Spirofractal spends churning through images that are not interesting enough to display. These quantities were not controllable before and Spirofractal picked values based on the transformations used. It still does this, but picks the values differently from before as the old rule did not give good results on the new types of Sierpiński fractal. This may mean Gallery images created with Spirofractal 3 are slightly different from how they looked before.
This option opens a submenu with a number of options that apply to set and basin boundary fractals, and, in some cases, to "other" patterns.
These options are mutually exclusive, and only apply to the built in set and basin boundary fractals, and select the type of numbers used to calculate the images.
In a similar way as real numbers are extended to complex numbers by defining i as a square root of -1, complex numbers can be extended to four dimensional numbers by adding two more components, usually called j and k. This can be done in two different ways, giving rise to quaternions and hypercomplex numbers. If you do this then the usual Spirofractal images of set and basin boundary fractals can be considered to be two dimensional cross sections of an 8 dimensional object where j and k are always zero for each parameter. If either quaternion or hypercomplex mode is enabled, then Spirofractal will instead show a cross section through a different constant j and k values. Neither of these options will affect the image until the j and k values have been set to non zero values, either using the edit option, or by randomising while they are turned on.
The hypercomplex option often results in parts of a pattern being doubled, especially for boundary fractals. The quaternion option often distorts images so they look as though they are being viewed at an angle. These options tend to have a much more dramatic effect on Basin Boundary Fractals than Set Fractals, (especially when the Hybrid Basin mode is chosen, as in this image) and often result in very complex patterns that have a kind of Abstract Expressionist look about them.
For more information about quaternions and hypercomplex numbers click here.
This opens a submenu of various set fractal types. The effect of this option is to control how the parameters are changed when you use the Randomise option. In Spirofractal 3 randomisation was always done as though "Any" was selected. As there are now several more parameters, if you want to explore a particular type of set this option may be helpful.The effect of the various options is as follows:
This option also applies to Boundary Fractals, and has the same effect on how the randomising works, but the names are no longer very meaningful.
This option is a little bit like the inside out option, in that it works by changing where on the screen each part of the image is plotted. Although currently only implemented for set/boundary images it could be extended to almost all Spirofractal image types. It works by cutting the plane along the negative x axis, then stretching and bending the plane so that any circle centered on the origin is deformed into a horizontal straight line. The main reason for providing this option, is that when displaying images of this type that use a complex power rather than an integer power there is inevitably a discontinuity along the negative X axis (or more accurately there is inevitably a discontinuity along some straight line starting from the origin, and the usual definition of complex powers causes it to be there). Using this option allows you to partially hide this discontinuity. It is also allows you to create a pattern that repeats periodically horizontally. (It may be interesting to zoom out in this case).
The options in this submenu affect how the inside of set fractals are colored. Some of the jigsaw color options for set fractals also change the inside rule. Using these options you can vary the outside and inside colors independently. There are five options:
Set fractals are based on the boundary of attraction to infinity of a simple polynomial. However it is possible to generalise this construction by considering the boundary of attraction to some other set. In particular you could consider the boundary of attraction of a set fractal itself. The Escher effect works by plotting the time taken for the iteration z=z^2 (scaled up by a suitable amount) to converge to the set fractal that would normally be plotted.
If |z|<1 then z tends to 0, so if 0 is inside the set fractal any point inside a circle of radius 1 will eventually converge into the set. The time this takes will usually be a lot longer near the edge of the circle than near the centre.
In theory you could use a different iteration then z=z^2, for example another Julia set. However this simple iteration seems to give the best results. Currently this option is only implemented for Set Fractals and is mutually exclusive with Quaternion and Hypercomplex modes. However it should be possible to extend this effect to "Bail Out" Pattern Maker patterns and allow the other Set Fractal effects as well.
You will normally need to turn on Banding to make this option interesting, though in some cases applying a filter to a non-banded image produces good results.
This option only affects Boundary Fractals. It is a deliberate recreation of a bug that was in a prototype version of the Quaternion and Hypercomplex option. Originally the program inadvertently used a mixture of hypercomplex and quaternion arithmetic when calculating Boundary Fractals using these numbers. This option deliberately selects the effect of that bug by using the wrong kind of division when calculating Basin Boundary fractals.
This option should really have a different name, as its name applies only to Complex attractors, whereas it affects the image in various ways for several of the modes other than C.A.T and Sierpiński fractals. For modes where it does not apply selecting it will switch Spirofractal to displaying Complex attractors. For complex attractors it changes the function used to calculate the attractor so that there is a term which has a singularity (a point where the function is not defined) at the origin. all the images of this type have mirror symmetry, whether or not mirror mode is selected. However, mirror mode will change the nature of the singularity.
For tiles the option text is a misnomer, and the option ought to be called something like "alternate symmetry", as this option adds a term to the formula which has the effect of moving where each point is carried to by the iterative function in a way consistent, roughly speaking, with the symmetry of the tile. This will usually change the overall pattern while leaving some features almost unchanged. For tiles with hexagonal symmetry this option does not make any difference for some values of rotational symmetry. This option does something different with square tiles from version 2 of Spirofractal. If you had a pattern in the gallery which used this option on a square tile, you can get the pattern back by turning off this option and turning on Inside Out instead.
For set fractals enabling this option causes a completely different algorithm to be used for deciding when to plot points in the set. The result is that the display is a lot slower, but considerably more lively. See bail in set fractals for more details.
For Basin boundary fractals, it changes the polynomial used to one with more than one root. This partially destroys the symmetry of the image, but turns the image into a hybrid image which contains features typically found in set fractals.

The effect of applying a singularity to a complex attractor. The chosen singularity caused the inward pointing loops to grow enough to cross over at the origin.
This is a special effect which is available for Complex and Quadratic attractors, and Orbit Type Pattern Maker patterns. It causes the way the pattern is generated to be changed, so that after about ten seconds, pixels that have not been colored in so far, are examined, to see what would happen iterating the function starting from the corresponding value. If the value tends to infinity, the pixel is colored in one way. If the value lands on a value that is part of the strange attractor it is colored another way. This region is (approximately) the basin of attraction for the attractor. In each case, the shade varies according to how many iterations were needed to classify the pixel.
In Spirofractal 4 this mode works in a different way from before. The old way could sometimes cause Spirofractal to stop responding for a long time, though it was possibly more interesting to look at sometimes. In the new version Spirofractal may sometimes discover another attractor. If it does it resumes drawing the image in the ordinary way for a while.
When gaps are being filled Spirofractal is drawing something similar to a set fractal - in particular a Julia set. Gap fill mode ignores any spatialiser that is turned on. In this case the resulting pattern is meaningless mathematically speaking, but sometimes quite interesting.
Gap fill is also available for cellular automata and ants. For cellular automata normally only "live" cells are allowed to have different colors, and "dead" cells are all black. When Gap fill is selected then when jigsaw color is used the dead cells are allowed different colors in the same way as the live ones. For ants turning on gap mode allows ants to wrap to the opposite side of the screen when they reach the edge of the area they are allow to occupy (the largest square that fits in the Spirofractal window). This can be fun when the ants move in long straight lines, but it stops symmetrical patterns from being generated.

Gap Fill effect for complex and quadratic attractors. In each case the iterating the attractor function in the darker area outside the many body of the attractor will yield values that tend to infinity, and the lighter area will be pulled into the attractor.
A spatialiser adds a third dimension to your patterns by assigning a z coordinate (notionally moving the point behind or in front of the computer screen), based on some function of the point being calculated. For example, the least interesting spatialiser (only really included for the sake of completeness), assigns a z coordinate based on the distance of the point just calculated from the origin. This always creates a cone shape, and the image is not really very 3D at all. Other spatialisers use various functions of the old and new coordinates, such as the length of the vector between the previous point and this, or the angle the previous point made with the x axis.
Spatialisers are available for C.A.T and Sierpiński Fractals, and Quadratic and Complex attractors. Other pattern types ignore the spatialiser setting. Spatialisers work very well with Complex attractors; they are not always so successful with the other types, though the "Wild" spatialiser usually works well, especially when Animation is enabled.
You will probably find that it is quite hard to tell exactly what the 3D shape of your pattern is, especially when the pattern is first drawn. This is partly because initially hidden points get plotted. Quite often a rarely hit point will be in front of a commonly hit one, which can be confusing until the point in front is hit. Another reason the 3D patterns may be hard to read is that they do not use lighting effects to indicate the direction a point is facing unless you enable the Real-time True Color option. This is one place the True Color Image option comes into its own as it dramatically enhances the 3D effect.
The various spatialisers are as follows:

This means no spatialiser is selected, so images are 2D. The image shown here is the base pattern for the 3D Flower in the What's new section, and the ball in the Eccentric spatialiser

This uses the old y coordinate. It is very easy to calculate so this spatialiser works best for animations. It is interesting with Quadratic attractors, as the old y coordinate is the same as the last but one x coordinate.
The image on the left uses the wild spatialiser and shows the effect of using a screen position that cuts into the pattern.


This uses the modulus (distance from the origin), of the old point. It is much more interesting than the next spatialiser. All the spatialisers that use a modulus tend to generate cone shaped objects with complex attractors, but this option often creates more spherical shapes as well.
This uses the modulus (distance from the origin), of the current point.

This uses the distance between the old and new points.
This uses the difference between the moduli of the old and new points.
This uses the difference between the arguments (angle of the line between the line joining a point and the x axis) of the old and new points. This options and the next two are rather slow to calculate. This option often give rise to "propellers" when used with Complex attractors.
This uses the argument of the line joining the old and new points.
This uses the argument of the old point.
![]() This image has been modified by using colored lighting. |
The Geometry option brings up a dialog that lets you edit various things that affect 3D images:
The projection is the method used to decide where to plot each point. The most accurate method is to use Ray Tracing. The other two options are quicker but less realistic.
The surface type determines how Spirofractal calculates a color for the point based on its original color in the 2D image, and the light strength and its point in space.
The focal length and screen position are used in ray tracing to determine where to plot points. The shorter the focal length, the more extreme the perspective effect will be. Short focal lengths are like wide angle lenses, long focal lengths like telephoto.
If (1-1/screen_position)*focal_length is less than 1 then only that proportion of the pattern will be visible. For example if you choose focal length 2 and screen position 0.75 then you will see a 50% cross section of the pattern. Cross sections are often quite interesting, as it is very common for the most frequently visited points to be obscured by a cloud of rarely visited points. The picture of the Wild spatialiser demonstrates a cross section.
The light strengths control how the object is lit. Except for luminous mode the final color of a point cannot be more than the light strength at a particular point. Interesting effects can be had by using colored lights rather than white lights. This will work best if you use the "Nature" color scheme as it contains a lot of whitish colors. It also works better with "shiny" or "metallic" color.
The options in the color menu change the pattern by using different rules to color each point. The options above the first separator can be used to change a pattern that has already been drawn. The other options may force the pattern to be redrawn from scratch, though this depends on the pattern mode.
The first six options select between various color schemes.
There are six basic color schemes available:
You can select one of these color schemes by pressing the appropriate key.
Hints:
Aliens has more abrupt changes than the other three schemes. As a result, it is good at bringing out structure from fractals that appear blurred using the other schemes.In the pictures below a rotation of fireworks is used on the left and of aliens om the right. It may also be worth using it when using the Zoom facility, and it often brings out extra detail in tiles.
Fireworks. This scheme is a personal favorite. It often gives the images a surprising 3D quality. Most of the images in the help file use it.
Nature is good at bringing out the resemblance of a fractal to real world objects such as plants and rocks.
The monochrome and primary colors scheme use only two and three colors respectively. They work well with bail-out type fractals when banding mode is on, and are also quite effective with banding or jigsaw color options on other pattern types. Color animation works in a special way with the monochrome palette - gradually fading the whole palette to white. Try it with Wider or Widest banding mode turned on with a plasma pattern!
The color scheme that is in use determines the type of transition that will be used when switching between patterns.

You can also create your own custom palettes using the Color editor. You get to choose three or four colors. These are displayed pure at thirds along the color scale. Spirofractal creates the colors in between using interpolation using one of eight rules for each color. There is no facility to save a palette explicitly at the moment, but if you save an image to the gallery that uses the palette the palette will be reloaded when you display that image. The easiest way to use this facility is to randomise the palette until you find one you like.
You can also completely change any of the color schemes by selecting the Rotate Colors option. This will cycle through 24 different rotations (12 for the screen saver if you do not allow pastel colors) and negative versions of each color scheme. In Spirofractal 4 there are even more palettes to choose from, because of the Palette Modification menu shown underneath this option. The way palettes are rotated has been slightly changed to try to compensate for the variation in intensity and lightness.

A crystal like fractal in Fireworks color and a rotation of it. Unfortunately the reduced size does not really do justice to the image.
This option is a quick way of cancelling the effect of the Rotate Colors option. The color scheme is reset to the current base scheme.
This option selects one of a number of different algorithms for working out how to rotate colors in the palette. Some options have fairly dramatic results on the color scheme. Some "vanilla" color scheme rotations don't look very nice on some patterns, because they are too bright, or not contrasty enough. The options in this menu can improve the appearance of such patterns.
Simply interchanging colors, which is how the Rotate Colors option used to work, does not always give very good results. For example swapping the blue and green components in colors will make the ones that had more blue much lighter, and the ones that had more green darker. Blues tend to look more colorful and intense than greens. Some palette modifiers try to compensate for this effect - this is what the default palette modifier does for example. However this doesn't necessarily give the best results. There are also some palette modifiers that have completely "wrong" values. These tend to artificially intensify certain colors in some rotations and then weed them out in others.
This option will probably be improved in future - for example by allowing you to select favourite combinations for the different pattern types. The new Default option tends to give much improved results for Orbit type images displayed in rotations with a lot of green. On the other hand it possibly causes Set Fractals to appear a little duller than before.
Jigsaw color completely changes the method used to color Spirofractal images. The effect of this option will be different according to the type of pattern being displayed, and whether or not the timer is on. This command always causes the pattern to be redrawn.
![]() Illustration of the effect of using the jigsaw color command. The top image shows the area of the fern created by each transform. The lower image shows where these areas are transformed to after two iterations. |
When displaying C.A.T. and Sierpiński fractals jigsaw color assigns a color to each point according to which transform has just been used. This allows you to see which part of the image each transform is directly responsible for. Where transforms overlap you will see points changing color rapidly. If you select this option a second time, instead of coloring the point according to the transform that has just been used, the image is colored according to the transform that was used the time before. This allows you to see how that part of the image is transformed by the other transforms. Selecting the option again repeats the process again. In fact repeatedly selecting the jigsaw option cycles through six distinct states:
Back to normal display (not jigsaw)
If the timer is on, then when the jigsaw option is selected, or is randomly chosen, Spirofractal automatically cycles through all these six states, changing every five seconds or so, displaying the same pattern each time. This is done until the normal mode is restored.
When attractors are being displayed jigsaw mode assigns a color to each position in the plane, based on its polar coordinates. The first jigsaw mode just shows any particular point in a fixed color. The subsequent modes show the color for where the point was at a previous iteration. For "tile" attractors the iterations used are the previous 4 iterations. For complex and quadratic attractors the iterations used are the previous two iterations,and then the iterations at t-4, and t-7. Generally you will see the distinct areas of color blend as you increase the time lag. Usually the features that show up as points that are frequently visited in normal display mode will get mixed up first, and may well seem to boil, or even move around. How quickly the colors get mixed up is a good indicator of how chaotic the attractor is.
Jigsaw mode is not usually very interesting for tiled images,as the areas of colour are so small that they usually blend very quickly.
For set fractals there are 18 different jigsaw modes (in two lots of 9, one set used with ordinary "bail-out" sets, and the other used with the "Attractor singularity modes". These are effectively special effects for set fractals. The different options change the test for deciding whether points are in or out of the set in various ways, and also the rules for coloring points in or out of the set. See Bail- out Tests for more details.
The picture on the left shows one of the jigsaw modes on a close up of the Mandelbrot set. The effect is to increase the contrast of the
outside of the set, while at the same time smoothing out the changes between bands of the same color.

For Basin boundary fractals, there are three different Jigsaw modes. When jigsaw mode is off the patterns just show long it takes for points to converge on their attractor, so that the boundary shows up as a narrow chain like structure. In the three jigsaw modes points are also classified according to the argument of the attractor they converge to (the angle the complex number makes with the x axis), so the regions the boundary divides the screen into are colored very differently, or according to the difference between the last two approximations calculated. (This latter option is of no real mathematical significance so far as I know, but it can produce quite psychedelic images.)
For Ant automata, jigsaw color changes the way the pattern is generated. Usually pixels change color according to how many times they are visited. With jigsaw mode each ant has a fixed color. If he visits a square that is not his color it gets his color, if he visits a square that already has his color, it loses the color. This means that the pattern generated is completely different. In fact quite often the ants get stuck with this option!
When cycling from one jigsaw mode to the next Spirofractal uses a transition effect which will cause the colors to shimmer when drawing Fractals or Attractors.
The film speed options work differently according to whether the color is determined by a hit counting method (fractals, attractors,tiles and "bail-in" Set fractals), or by a bail-out(Set and Basin Boundary Fractals). Film speeds do not apply to Cellular Automata.
For patterns using hit counting with "fastest" film the first few times a pixel is hit it will change color each time. This will make your pattern emerge quickly, possibly too quickly if you have a very fast computer. It also means that the "True Color" image option cannot refine parts of the image in these colors. Each of the other film types increases by one the minimum number of times a pixel has to be hit to advance to the next color. Therefore if you use the slowest film pixels need to be hit five times before they show up at all, so that your pattern will take five times as long to develop. On the other hand the True Color Image option will then be able to assign at least five different shades to each of the original 256 colors used. For these patterns Spirofractal can recolor the pattern without recalculating it.
For patterns using bail-out tests the slower the film speed the more iterations before bail-out are necessary for the point to reach a certain color. Slower film speeds may be better when you want to zoom in on a very small part of an image. For these pattern types the pattern has to be redrawn from scratch when you change film speed.
In Spirofractal 4 you can have striped color schemes as well as smoothly graduated ones.There are four different widths of stripe. The two narrow stripes work best with Set and Basin boundary fractals, the two wider ones are sometimes good in orbit images (Complex attractors, Tiles and fractals), but work best with Plasma Clouds. When combined with jigsaw modes and Color cycling they can produce some fairly psychedelic effects, which you may not like much!. The keyboard short-cut (Z for Zebra), cycles between all the possibilities in turn.
For set fractals the regular color schemes are modified so that the colors used for "Inside" parts are all shades of blue, and the outside colors don't have much blue at all. This option allows you to instead select that the inside should all be shades of green, or red. Of course the outside colors have to be changed then not to have too much red or green.
This option continuously rotates the colors of the color scheme. This will cause different parts of the pattern to stand out more at different times, and will often create an impression of a feature moving within the pattern. Be careful when combining this option with banding or jigsaw options. Some combinations of options can cause the screen to flash in ways that create a possibly unpleasant strobe effect. Most of these are specifically disabled from the timer, unless you choose one of the "disco" mood options!
Color key for "Aliens"
|
You can use the Color Key option to display a small chart at the right of the screen which will give you an idea of the colors that your current scheme will employ. The numbers to the right indicate roughly how often a particular pixel has to be hit by the fractal for it to get to that color. The top number is always 0, then the counts needed to get to every sixteenth color are shown. The color key may be useful when you use the Rotate Colors option. For set and basin boundary fractals the count instead usually indicates the number of iterations required to get to that color. However the details vary according to the options used.
In the early stages of displaying strange attractors and tiles Spirofractal scales the pixel counts up to improve the contrast of the image. This will cause the colors to change, but it helps to improve the contrast of the image.
The color key is not available when animation is on. With jigsaw mode options the key is not displayed for some pattern types. Where it is displayed the key is only approximate (especially in jigsaw modes, where the coloring rules are sometimes very complicated.)

This option is similar to the film speed options, and works in the same sort of way: It will increase the time needed for a pixel to reach a certain color, so causing the colors to change more slowly as the pattern is generated. It differs in two ways from the film speed options:
The pictures on the left and right show the counts needed to reach the various colors without and with slow mode.
The options in this menu affect the way Spirofractal runs. Depending on the options you select it may work like a screen saver, or it may do nothing without an explicit command from you.
The animate option is available with all the image types, but is especially interesting for C.A.T. and Sierpiński fractals. In every case the option works by displaying a pattern for a short time, and then altering the parameters used to generate the pattern by a small amount in various different ways. Sometimes Spirofractal will super-impose images from several frames ("after-image"), sometimes it will generate each frame from scratch. The after image effect helps improve the appearance of animation with Attractors and Tiles. Unlike in previous versions animation is not switched off again automatically, but you can stop animation by selecting the option again at any time (perhaps because the current image is of interest). As far as possible Spirofractal tries to keep up a "frame rate" which will give the impression of a continuously moving and transforming image. On slow computers it may reduce the image size in order to be able to do this, or (for set and basin boundary fractals) increase the pixel size. For fractals animation is done in such a way that the fractal will usually appear to consist of various orbiting parts which bend and stretch or shrink in various ways.In many cases there will be a pronounced 3D effect, though this is pure coincidence. There may also a 3D effect for quadratic attractors, though this will usually be short-lived, because the attractor will often collapse - turn into a simple curve or even isolated dots. For sets and basin boundary fractals animation will not give the effect of continuous motion, because the calculations involved in displaying even an approximate image take a significant amount of time. You can alleviate this problem by reducing the size of the window - if you reduce the width and height by half the animation will run four times faster.
Animation can be used with complex attractors and tiles, but is not always very interesting (though it usually works very well when after-imaging is turned on, which it always now is for tiles). Unless you have a fast computer (say a P2 400MHz) Spirofractal will not be able to plot enough of the attractor to give a very clear idea of its appearance (especially at high degrees of symmetry). When animation is happening, Spirofractal effectively scales the number of times each pixel has been hit, in order to improve the contrast of the image. This can cause the colors to flicker somewhat. Animation also works with jigsaw mode, and when you have zoomed in on an image.
Normally Spirofractal picks the parameters to vary at random. Except for cellular automata you can choose to specify how Spirofractal should perform animation. This option will bring up a dialog for each pattern type allowing you to select how to animate your pattern. To revert to random animation for a particular pattern type just clear all the flags.
I won't go in details about what each flag does, except to note a couple of points:
It is quite easy to create an animation for a web page by using this option. When you have a pattern that you would like to save an animation for, follow the following instructions:
Owing to patent restrictions Spirofractal cannot offer directing saving of animations to .GIF format.
When the timer is on Spirofractal will pick one or more of the menu commands at random every fifteen seconds or so. (The actual interval can be anywhere between five and thirty seconds depending on the type of image, and the options that are currently selected). This will have the effect of changing the image randomly. If you want to create your own patterns remember to turn the timer off first! The timer mode will occasionally produce a few boring images in a row. It is very hard to know which images will be interesting. In fact the timer option does some additional filtering of the random values generated so you may find it quite hard to generate images equally as good manually.
Entering this mode stops patterns from being "developed" automatically. You can use this option to pause the display at the point you would like to save a pattern. While you are in this mode you can advance the pattern one "generation" by pressing the space bar, or several by quickly toggling stepping mode off and on again. If you are in animation mode Spirofractal will display one frame of the animation and then pause. The quality of the image will be somewhat higher than for a normal animation because the program allows itself more time to create the frame. (This is done automatically when saving animations, so you don't need to select it for this). Entering this mode forces the timer off if it is on.
You will need to use this mode if you want to use the options in the Transform menu.

This option applies to Set fractals and basin boundary fractals. When it is turned on moving the mouse over the pattern will cause the points that are visited in the iterations starting from the mouse location to be plotted in white. This will produce interesting patterns of various types when the mouse is moved along a boundary region. To get the best results with this option you may need to stop the underlying pattern from being generated by using the Stepping mode option. It is highly advisable to disable this option before attempting to save or print images, or using the Transform menu commands. As with other aspects of set fractals the most interesting places are near the boundary. Orbits are only really interesting for Mandelbrot type sets, not for Julia sets, because almost all points in the Julia set have similar orbits.
The illustration shows the orbit for a point just inside the main cardioid of the Mandelbrot set, near the smallish circle at eleven o' clock. A point just the other side of the neck between these two regions would have an orbit where the branches of the star spiral in on separate points rather than converging. Even nearer the neck than this the orbit becomes ever more convoluted as it hesitates between converging to a single point, settling into a cycle, or zooming off to infinity.
This option controls whether 3D images are generated when the timer is on. If you have a slow computer, or a display that is limited to 256 colors then you may not enjoy the Spatialiser images. This option allows you to turn them off if you want to.
If you enable this option, then when generating Spatialiser images Spirofractal will generate the pattern in true color. Normally the pattern is still based on 256 color palettes, and you would have to use the "True Filtered Image" option in the Transform menu to render it in. This option is worth using if you have a fast enough computer, but the pattern will be generated about 20% slower.
If this option is on then each time you turn a filter on or off the image is converted to a filtered true color image, ora palette filtered image (according to which of these you last used). This is probably useful if you want to learn about the filters, but is annoying if you want to turn several on or off at once.
This mode removes the border and menu from the window, which is useful when you want to save or print an image, using copy and paste to another program. Initially this option will make the program run full screen, however if you have reduced the size of the window Spirofractal is running in then that new size will be used instead. In the latest version of Spirofractal you can change between normal and full screen modes without losing your current zoom state
While you are in full screen mode the menu is not available. However, the short cuts continue to work as normal. You can press C again to bring back the menu and window borders.
This command makes Spirofractal fill the screen, keeping the current state of the Window border the same. It is a little like using Maximize, but the Window can still be sized and the task bar will be covered up. If you select the command again, the window is restored to its previous size.
The options in this menu all manipulate in some way the image created by your pattern, rather than change the pattern itself. You would normally use these commands after switching to stepping mode.
![]() |
![]() |
The height map option, and the quarry map option, both create a true color relief image, by tipping the image onto its side and adding a vertical component to each point based on its color. Each point shows as a vertical line displaying the "strata" needed to get to that color. Both these options work for any image type, but they work by statically converting the currently displayed image - they do not create images in real time. At present you cannot save a height map or quarry map directly. You will need to use the technique described in Saving and Printing Images.
The height map option makes points higher if they are in high numbered colors (points that are visited often for pattern types that use a hit count method of coloring). The quarry map option works the other way round. In one case features of the pattern will stand out as cliffs or mountains, in the other they will appear as holes or valleys.
The pictures on the left show a "Downtown Mandelbrot Heights", and a "Mandelbrot Quarry". These options give good results with most pattern types. Tiles work especially well.
This option recalculates a set fractal, or a Pattern Maker Bail-out fractal, in a way designed to enhance the boundary. Normally Spirofractal plots each pixel by iterating one value, which happens to be the value at the bottom left corner of the pixel, until it bails out, or converges to an a periodic orbit (you might think it would be better to use the value at the center of the pixel, but this really makes no difference, other than to shift the pattern by half a pixel). When the Enhance Mode is turned on, Spirofractal looks at points that lie very close to this value (to be exact it considers the corners, and edge mid-points of a square centered on the regular point with a side of 0.375pixels. If one of those points takes longer to bail-out,or converges when the original point did not, Spirofractal chooses that point as the representative of the Pixel instead, and recolors it accordingly. If not it keeps the original point and color. It then repeats the process using a square half that size centered on the new point, and so on. If Spirofractal manages to find a new representative of the pixel that takes more than 256 extra iterations to bail-out it considers that somewhere within that pixel there is a point in the set, and it is colored black. No matter how many times the process is repeated the point that represents the pixel does lie within the square the pixel fills (or at least it would if the whole pattern was shifted by half a pixel).

The effect of this option is to accentuate the boundary of the set. To some extent the fractal is distorted, because very small features are magnified quite a bit. However this type of technique is essential if you want to produce a picture of something like the Mandelbrot set that indicates where all the points of the set lie near to.
This option can take an extremely long time to run - perhaps up to half an hour if you have the patience. It is a good idea only to select this option once you have left the original pattern to develop until all the parts that are "inside" (colored blue), have appeared.
Currently this option does not work with the Escher effect, and it could do with being more configurable, but this will have to wait for a later release.

This option is a pop up of various filter effects that can be applied to your images. There are numerous effects, though the names are somewhat approximate for some effects. The filters can either be applied to a true color image, or to the palette of 256 colors used in the image. In the latter case the effects are somewhat unpredictable, though often surprisingly good. Each filter works better with some pattern types than others. Please note that all the effects are applied in 2D. This means that the filter effects may reduce the effectiveness of spatialisers.
Please note that the filters are cumulative, so to change filters you will often want to turn the current filter off and then turn another filter on. Turning on a lot of filters uses up quite a bit of extra memory, and also will make image conversion much slower. It matters what order you add the filters in. The next release of Spirofractal will probably have a better user interface for selecting and combining filters.
The filters are all contained in the file spffilters.ini. You can add your own filters by editing this file, where you will find some instructions.
Here are a few tips on using filters:

In normal operation Spirofractal displays the patterns it creates in 256 colors. This means that some patterns, especially set and boundary basin fractals, may contain unpleasant contour lines where there is a long boundary between areas of the same color. If you want to save an image you can use this option to convert the image to use many more different colors. This will usually improve the appearance as can be seen by comparing the left and right hand images here.
In order to display the true color images properly you must set your computer to display in 24 bit or 32 bit True Color.
There are three types of operation Spirofractal can do in this conversion:
For 3D images created using one of the spatialisers, the conversion to true color will dramatically enhance the image by applying lighting effects to indicate which parts of the image reflect more light, and, if the ray trace geometry is used, how far they are from the light sources. You can try the effect of changing the light strengths and surface type of the object to see which image looks best. You can change these without Spirofractal's having to recalculate the image from scratch.
For some image types, it is possible to enhance the image by making more accurate use of the values calculated for each point in the image. For example for Set and boundary Basin fractals with most options it is possible to split each of the original 256 colours into 12 different shades, which blend in seamlessly with the shades for the adjacent colors. For C.A.T fractals, and all types of strange attractor colors can be split into shades according to the range of values which map to that color. Note that this means that in order to enhance these images you will normally need to use one of the "slow" film speed options, as with the default "fast film" option the first thirty or so colors are only hit once .
Any image filters are applied. You can use filters to sharpen or blur edges, and to apply special effects.
The screen image is automatically put on the clipboard when this process is completed. Make sure you do not cover up any part of the image with other programs when you use this option, otherwise it will be put on the clipboard correctly. In addition make sure you are running with your display set to a True Color mode, as the image is not available except from display memory. Please note that the conversion to true color is a purely temporary - using any Spirofractal command, or doing anything that will cause the screen to be repainted will cause the image to revert to 256 color mode. For this reason you may well want to disable the Orbit Trails option.
This option also applies the selected filters to your pattern, but without converting it to true color. This means it is not very useful for 3D images. However it often has surprisingly good results. Below are three images, the first is unfiltered, the second has the "engraving" filter applied in true color, the third has "coarsen" and "engraving" applied as a palette filter. Be warned that some of these filters can dramatically reduce the effectiveness of bitmap or JPEG compression (while blurs and softens have the opposite effect). In fact this is the main reason I did not include the image with exactly the same filters in both cases.
![]() | ![]() | ![]() |
| Unfiltered | True Filtered | Palette Filtered |
Spirofractal has some support for saving images. You can save a file in these formats from within Spirofractal:
The last of these is possibly the most interesting. Your image will be resized to 320*400 pixels, and saved as a 256 color bitmap. If you save the file as c:\logo.sys, then it will replace your current start up screen (at least on Windows 95/98/Me). You can also create shutdown screens, which should be called logow.sys, for the "Windows is shutting down" screen, and logos.sys for the "Safe to power off" screen. These go in the c:\windows directory.
You can also save images by using the clip-board and pasting them into other programs. This will be useful if you want to save an image in an unsupported format, or if you want to save a height map or quarry map, or just performing image editing on them. See Saving and Printing Images for more details.
This menu contains options to add and remove image parameters from a gallery, and also backwards and forwards commands to allow you to move around recent patterns. Most of the options in this menu are restricted in the unregistered version of Spirofractal.
You can use the gallery to save up to 36 different Fractal images. The images are saved as the transformations and options needed to create them. The zoom state of the pattern is also saved. However filter information is NOT saved. If you want to save an image as a file then refer to saving and printing images.
The images are all stored in the Spfgallery.ini file. This is an ordinary Windows INI file stored in the directory where you installed Spirofractal. The Gallery section contains the names of up to 36 pictures each associated with a single character key. For each image there is a section in the INI file which records the program options and transformations in effect when that image was created. (Previous versions used the file Spirofract.ini. The name has been changed to make installing the new version simpler).
If you accidentally randomise the parameters of the image you have been working on, or zoom in on the wrong part of an image, you can use this facility to return to the previous image. In fact this facility is implemented as a temporary gallery, so there are 36 levels of undo available. This facility is not available in the unregistered version. You can look on this either as an Undo facility, or a "Back" button similar to what you would get in a Web Browser. Images are not allowed into the undo gallery until they have been displayed for at least two seconds.
This moves you forward again in the temporary gallery history. Please note that as with other programs the forward history will be lost as soon as you use a command that changes the image.
You can use this to add a new image to the gallery or to update an existing image. This facility is not available in the unregistered version.
This option allows you to select one of the images in the gallery for deletion when you no longer want it or need to make room.
There is now some support in Spirofractal for saving images. See Save Image for details of how to save a file in Spirofractal. If you want to save a file in another format (.gif for example), or print an image, then it is easy to do in the following way, provided you have a suitable image editor.
Make sure you have enabled the full screen option so that the Spirofractal window does not have either a border or title.
Press the Alt key and the Print Scrn key together ( Alt+Print Scrn). If the program is filling the screen completely then Print Scrn will also work. If you put the program into stepping mode before trying to print the pattern your pattern will automatically be copied to the clipboard each time you advance the display so you won't have to press Print Scrn. Before saving your images in this way you may like to use one of the True Color Image options in the Transform menu. This will often considerably enhance the appearance of your patterns. It is likely to be beneficial to do this if you are planning to save the image in a JPEG file, as the file will usually compress better (unless you used sharpening filters), and is less likely to contain "artefacts" (strange moiré type patterns round hard edges). On the other hand this option will not be a good idea if you want to safe the file in .GIF format.
Open your image editing program (Paint will do), and from that program's menu select Paste, or Paste as New Image, if available.
If you want a smaller image then before entering full screen mode and pressing Alt+Prnt Scrn resize the Spirofractal window in the normal way you would any Windows program.
You can then either save or print the image as you desire.
Most of the images in this help file were produced using this technique. Obviously the bigger you can make the image the better quality it will tend to have.
If you would like to save a tile image for use on a web page then you will probably want to save just a single tile. The best way to do this it to reduce the size of the Spirofractal Window until it is the same size as you would like the tile to be. Then use zoom mode, by double clicking on the image. Spirofractal will display a single copy of the tile, which you can then save in the same way as before. It is probably best to click near the bottom left of the image. You may need to crop the image slightly if the window was not the same size as the tile. For a square tile best results will be obtained by making the window square. For hexagonal tiles the window needs to have a width:height ratio of 200:173, but you need to experiment to find a size that exactly fills the tile when zoomed in.
The Spirofractal screen saver works almost identically to the main Spirofractal program in full screen mode with the timer turned on. The main difference is that because it is a screen saver you cannot use the keyboard or mouse to control the images. The installation tries to make Spirofractal your screen saver, but if you cancelled this or it did not work then you can make it your screen saver by opening the display properties part of control panel (an easy way is to right click on a blank part of the desktop and choose properties). Go to the screen saver page, and select Spirofractal as the screen saver. You can then use the test and settings buttons to test and configure Spirofractal before you decide whether to make it your Windows screen saver.
There is a configuration dialog for the screen saver, which allows you to select various options, and enable or disable various behaviours, most of which correspond to similar options in the main program. The reduce memory option disables patterns that need to allocate large amounts of memory. For information about the processor use setting see the next paragraph. All these options affect the main program, whether or not they can be set from it! If you are a registered user you can also choose to suppress the Wolfram Cellular automata, as these can cause unpleasant flickering on some screens. Some people have requested the ability to control the screen saver using hot keys or similar. This is not going to happen, as you already effectively have this facility if you run the Spirofractal program full screen and full size, with the timer on. One point to note is that you CAN save an image from the screen saver, by pressing the Print Scrn key. This won't dismiss the screen saver, but it will copy the image into the clipboard, and you can then paste it into an image editing program, as described in Saving and Printing images.
The processor usage/speed configuration changes is how fast the images change while being generated, or rather it sets a desired amount of change per frame. Spirofractal estimates how long it will take to change the image by this amount, and tries to allow itself this much time for the frame, subject to its being less than a maximum of 50ms. For images where frames can be calculated in less than 50ms (C.A.T fractals perhaps), Spirofractal will idle for the remainder of a 50ms time slice. Ideally you should set position the speed so that the slowest images (3D attractors with real-time true color, develop at the speed you want, or do not use up more processor time than you want). Other images will then develop at roughly the same rate, and will use up less processor time. Setting the speed option to the minimum is is a little like setting the film speed in the main program - more exactly you are effectively controlling the "exposure time" per frame.
Please note that the Spirofractal screen saver will tend to use as much processor time as it can get. It therefore should not be used on a machine that is a server, or on clients of Windows NT Terminal Servers. Actually, this is probably true of the great majority of "fancy" screen savers.
In Spirofractal v4, you can also select roughly how long each pattern is displayed for, using the time per pattern scroll bar, which will vary the time between four and sixteen seconds. However the actual times will vary from this by a considerable margin: Spirofractal will allow a certain extra percentage of this time for patterns that take longer to draw well. You can also select a mood setting. The Gentler moods forbid or discourage options that generate particularly psychedelic patterns, or very sudden changes. The more lively moods encourage or enforce such options. However you will soon find that Spirofractal seems to have a mind of its own. If you find yourself wanting to take control of the program more, then you should use the full program rather than the screen saver.
The words screen saver should not be taken as implying this program can protect your monitor from damage if the screen saver is left running indefinitely.
When the full Spirofractal program is running with the timer turned on and the display full size, it will prevent the the Windows screen saver from starting, whether or not you use Spirofractal as your screen saver. This is so that you can leave the Spirofractal program running with the timer turned on, without being interrupted. Very occasionally however the screen saver may start, as Windows doesn't allow applications very long to do this, and the screen saver may try to start when Spirofractal is very busy. This is a change from version 3, which temporarily modified the Windows configuration to achieve the same thing more reliably. However, this then left you with no screen saver if Spirofractal or the computer crashed.
A fractal is a usually* complex mathematical object in which the structure of the object is reproduced on an ever smaller scale. There are various ways of defining fractals more formally, but they are somewhat abstruse, and not altogether satisfactory. Fractals are often though of as having fractional dimension, though there are several different ways of calculating this, and I am not sure how much use it is in practice. For example the Sierpiński triangle has too many points to be one dimensional (it would take an infinitely long line to draw it), but has zero area. You can consult the references at the end of this document for further information.
As you should already know from my website the first fractal was found by Sierpiński in 1915. Nowadays fractals are used to create simulated landscapes and plants in both films and computer games. Fractals are also used in image compression.
*Usually because some fractals are uninteresting - if the construction used to create the Sierpiński triangle is tried on a square instead you just get the whole square. On some definitions this counts as a fractal.An affine transformation is a linear transformation that maps each point (x,y) in the plane to a new point using the following formulas.
x-> ax+by +e
y -> cx+dy+f
where a,b,c,d,e, and f are all constants.
The word affine is related to affinity. The idea is that some linear transformations are shape preserving, and can be called similarities. Affine transformations do not generally preserve shape, but the transformed shapes are clearly related to the originals and can be called affinities.
A contractingaffine transformation is one where any two distinct points are brought closer together by the transformation. To generate a contracting affine transformation a,b,c and d in the formulas above have to satisfy some fairly simple mathematical inequalities:
|
a*a+c*c < 1 b*b+d*d < 1 a*a+b*b+c*c+d*d - (a*d-b*c)*(a*d-b*c) < 1 |
This means that all four numbers need to be less than one. It does not matter what the values of e and f are.
| Images this side show effect of transformations on their own. |
| Images this side show effect of transformations combined. |
Any affine transformation can be viewed as composition of four simpler transformations applied one after another:
A magnification. This multiplies the x and y components by fixed amounts (possibly different for x and y). The values are always between -1 and 1 if the transformation is contracting. In general this will change any square with its side parallel to the x and y axes into a rectangle (smaller than the square if the transformation is contracting). If one magnification is negative, it means that the transformation is effectively a reflection of some kind.
If you do not like the idea of a negative magnification, you can decide to split this transformation into an optional reflection, followed by a positive magnification, but this does not really change anything.
A shear . This adds a fixed proportion of the y coordinate to the x coordinate. This will have the effect of changing a rectangle with a base parallel to the x axis into a parallelogram of the same area. The shear angle is the angle the sloping side of the parallelogram makes with the y axis.
A rotation. A rotation does not change the shape or size of any part of the plane. It just rotates it about the origin by some amount.
A translation. A translation moves every point in the plane by the same fixed amount. It has the effect of simply moving any shape somewhere else. In the formulas above the e and f values represent the translation component of the transformation. The translation component of a transformation can be found by seeing where the origin moves to.
These four quantities give a much better insight into what the transformation does to a set of points than the six values a..f do. Normally the impact of all these quantities can clearly be seen in the fractal produced by a transformation. For example the fern fractal has three transformations which scale and rotate by different amounts, and this can be seen in the fact that a fern leaf contains three different smaller versions of itself (one leaning left, one straight and along a bit, and one leaning right). all the same it is usually a great deal easier to understand why a particular set of transformations produces the fractal it does after looking at the fractal, than it is to predict the fractal in advance.
The order in which these four transformations are combined is important. The effect of rotating by 90 degrees and halving the x value is obviously quite different from that of halving the x value and then rotating. In Spirofractal the combination is done in the above order, i.e. first magnification, then shear, then rotation, and finally translation. This way all four quantities have clear and natural geometric interpretations in the parallelogram to which a square is transformed.
|
|
|
In the past, perhaps especially at the end of the nineteenth century and the beginning of the twentieth, most scientists assumed that provided you knew the "laws" that governed some system (such as planets orbiting a star, or billiard balls colliding on a table) and knew its state at some initial point that you would be able to predict its behaviour at any time in the future. Newton's law of Gravity is probably the most famous instance of a law which seems to work like this - using it astronomers are able to predict astronomical events such as eclipses centuries in advance.
However,many everyday phenomena cannot be predicted like this. The problem is that it is not usually possible to know the initial state exactly. Sometimes this does not matter, but in many other situations initially similar states of a system become more and more different as time goes on. After a while the differences are such that you cannot predict anything. Taking more accurate measurements may enable you to predict things for a bit longer, but often it is a case of diminishing returns - even a big increase in the accuracy of the initial measurements gives only a small increase in the length of time your predictions are useful for. This is why weather forecasts are rather unreliable, and get more and more unreliable the further into the future they are for. This is called sensitive dependence on initial conditions, and systems which have this behaviour are called chaotic. The three pictures on the left illustrate an example of this behaviour in a simple iterated formula. In the top graph points are colored according to their position. In the second, they are colored according to their position two iterations previously. In the final graph they are plotted according to their position 7 iterations previously. Note how the areas of color have been blended together and dispersed. This means that points initially far apart have been brought close together, and vice versa.
The discovery of this unpredictability is the fundamental idea in chaos theory, and is the underlying experience of the infamous butterfly effect, where a butterfly flapping its wings "causes" a hurricane in another part of the world. What we should really say, is that if we make two long term weather forecasts based on initial conditions that differ only in one measurement of air pressure in one place, by an amount comparable to the difference caused by a butterfly flapping its wings, then one forecast might predict a hurricane, and the other not.
Now, although the weather is not very predictable on a day to day basis, it is fairly predictable on average - although a very mild winter's day might be warmer than a cold summer's day on average winter is colder than summer. although the weather is variable, in habitable regions at any rate, it does not vary very far from an average. If we compared the weather for a certain place on corresponding days of the year from different years, we might find that the weather was quite different on a lot of days. Nevertheless, on average we would probably conclude that the weather was similar in the two years.
When a bounded chaotic system does have some kind of long term pattern, but which is not a simple periodic oscillation or orbit we say that it has a Strange Attractor. If we plot the system's behaviour in a graph over an extended period we may discover patterns that are not obvious in the short term. In addition even if we start with different initial conditions for the system, we will usually find the same pattern emerging. (The initial conditions for which this holds true are called the basin of attraction for the attractor. (For a more formal definition see the Fractal FAQ listed in the acknowledgements.) In some cases a system may have several different attractors. When this happens with the Complex attractors in Spirofractal there is a loss of symmetry.
Intuitively we might expect the weather to be unpredictable, as we can see that there are many influences upon it. However even simple systems can be chaotic. The attractors plotted by Spirofractal are polynomials, or other fairly simple functions, that use either two real variables, or one complex variable (which amounts to the same thing). The functions are evaluated over and over again, using the result from one iteration as the initial values for the next. Sometimes the values will tend to infinity, and so are not bounded. Sometimes the function is not chaotic (small differences in the initial conditions do not increase - these functions result in attractors which are simple curves). But a small minority of the possible functions give rise to strange attractors, and in many cases these have beautiful patterns.
The formulas used for the various types of attractor are as follows:
| Pattern Type | Mirror Sym. | Singularity | Formula |
| Complex | No | No | z->[a + bzz+cRe(zn)+di]z + ezn-1 |
| Complex | Yes | No | z->[a+bzz+cRe(zn)]z + ezn-1 |
| Complex | No | Yes | z->[a+bzz+cRe(zn)+dRe((z/ z )n )|z|]z + ezn-1 |
| Complex | Yes | Yes | z->[a+bzz+cRe(zn) + dRe((z/z)0)|z|]z + ezn-1 |
| Quadratic | N/A | N/A | x->a+bx+cx2+dxy+ey+fy2, y->x |
The formulas used for Tiles are very complicated. They were derived from the book Symmetry in Chaos. However, I slightly adapted them in order to evaluate them faster - removing unnecessary multiplications and evaluations of sines and cosines. This means that the real parameters I use for hexagonal tiles do not exactly match the ones in that book, though there is an easy conversion from the book to mine. Anyone seeking clarification may e-mail me at the address at the end of this document.
An interesting curiosity about the calculation of strange attractors, is that because of the limited accuracy of a computer, the points calculated very quickly deviate from the true values by a large amount, yet it can be shown that there is always a point near the starting points for which the sequence of values calculated would have been as close as one pleases to the true values!
Mandelbrot and Julia sets are both based on the idea of choosing two complex numbers z0 and c, and then repeatedly evaluating zn=zn-12+c. If zn does not tend to infinity the point (z0,c) is in the set. If we consider all possible z0 and c then we end up with a four dimensional set that it is rather hard to visualise.
The Mandelbrot set is the two dimensional subset of this set that results if you always pick z0=0 and allow c to vary.
The Julia set for a complex number k is the two dimensional set that results if you always pick c=k and allow z0 to vary. Strictly speaking this is known as a filled Julia set. The Julia set is the boundary between the points that are attracted to infinity and the points that are not.
It is fairly easy to prove that all the points that are in the Mandelbrot set lie with within distance 2 of the origin.
Outline Proof: if |z|>2, then |z2 +c | ≥ |z2|-|c| > 2|z|-|c|. If |z|>|c|, then 2|z| - |c| > |z|. So, if |z| > 2 and |z| > |c|, then |z2 + c| > |z|, so the sequence is increasing. This is not the same as proving the sequence tends to infinity, but with a bit more work you can see that in fact the distance from the origin will get bigger more quickly the further you get from a distance of 2, because the difference of the distance from 2 will roughly double with each iteration while we are still near two, and will increase even more thereafter. Now, after the the first iteration, |z|=|c|, so if |c|>2, the sequence diverges and this means that the Mandelbrot set lies within |c|≤2).
The same is not true for Julia sets, because we can define a Julia set for any number k at all, and the set will always have an infinite number of points, and for any distance we can always choose k so that the Julia set contains points at lest that far from the origin. However in this case points can be no further than than |k| from the origin.
The reason points have to lie in this region is, that in order for a sequence defined this way to converge to a value k, |d/dz z2| near k must be less than one, which is not the case anywhere outside a circle centered on the origin with a radius of 0.5. The values of c for which z2+c=z has solutions in this region, are the only ones where the Julia set can possibly converge to a single value other than at the isolated points which are solutions of the equation. In fact the region where convergence is possible corresponds to the large heart shaped area around the origin that lies in the Mandelbrot set. There is an elegant formula for the boundary of these region, and Spirofractal 4 has a pattern which displays the Julia sets near this boundary, called Inverse Julia 2. This pattern uses an orbit iteration, which means that only points in the Julia set proper are plotted, and not the points in the filled Julia set or outside.
However, it is possible for this iterative process to converge on a sequence which oscillates between two or more values. For example the points that can oscillate between two values can be found by considering (z2+c)2+c=z. Two solutions for this are the two solutions where z2+c=z, so the oscillation between two values will take place if (z2+z+c+1)=0, which is what you get if you factorise the quartic equation above. By similar reasoning as before we can only converge to these values if |d/dz ((z2)+c)2+c|<1. This region corresponds to the large circle next to the heart-shaped zone in the Mandelbrot set. (We haven't proved these points do converge, only that they might - it is conceivable that we might start off in the wrong direction and start too far away from the zone where convergence takes place).
By solving other similar equations, for oscillations with period 2,3,4... etc we could find more possible regions where z2+c settles down into a regular pattern.
It turns out that the Julia set for any complex number k consists of nothing but isolated points, unless k is in the Mandelbrot set, and in fact the Mandelbrot set is sometimes formally defined as the set of points whose Julia sets are connected. The reason the Mandelbrot set has this relationship with Julia sets is that z2+c has its best chance of converging into a regular pattern if you start with z0=0, because that it is where z2changes most slowly. You may be able to see why this might be so if you consider real values only, and draw y=x and y=x2+c on the same graph. It is a special case of a more general result proved by Fatou - that if a polynomial does have an attracting cycle, then it attracts at least one critical point (a point where the derivative is 0). The only critical point for z2is z=0.
As already mentioned, the Mandelbrot and all the Julia sets can be considered to be 2D subsets of a four dimensional object. Spirofractal generalises the process used to create these sets by displaying other planar cross sections of this object. It does this by choosing two different linear transformations of each point z. and using one value for z0, and the other for c.
It is also possible to generalise the Mandelbrot set, by considering other polynomials. There is no point considering other quadratics, as a simple transformation similar to the one used to solve quadratic equations will show that any quadratic polynomial will behave in essentially the same way. For higher powers this is not the case, because general polynomials have several critical points. However znis obviously the simplest case to consider.
The same proof that the Mandelbrot set lies within the region |z|≤2 holds good for higher powers. Indeed it is easy to refine it and show that |z|≤2(1/(n-1)). However, it is not really worth worrying about, as at worst we do a few extra iterations to discover a point is outside the set. The higher power we iterate, the more quickly most points can be shown to be definitely in or out of the set. On the other hand each iteration involves a more expensive calculation.
Spirofractal 4 even lets you construct set fractals for zn where n is a negative integer, which gives another class of nice symmetric patterns, or even an arbitrary complex number. In the latter case the patterns are not symmetrical (except about the x axis if n is real). Both these patterns are rather dubious mathematically, because in this case the distance of zn will oscillate, rather than tending uniformly to zero or infinity, so the proofs above break down. Nevertheless the patterns produced are interesting. If you set a very high bail-out value these sets become very similar to basin boundary fractals. The patterns are only interesting if you choose the phase and period option in the inside rule option.
Another generalisation of set fractals is to use a generalisation of complex numbers for the iterations. There are two four dimensional generalisations of complex numbers - Quaternions, which form what is known as a "skew field" (a*b <> b*a in most cases), and "hypercomplex" numbers where (a*b = b*a, but a/b does not always exist). For these numbers Spirofractal can only show a two dimensional cross section of an eight dimensional object!).
Since points in set fractals lie in the region |z]≤2, Spirofractal normally uses |z|>2 as the test for whether it can stop iterating because a point is definitely outside the set. However, interesting features of the region outside the set can be found by using different tests. In general the main effect is to change the contour lines of the region outside the set, as other tests will take a little longer to determine that some values are outside the set. However, with some tests certain points are not detected as being outside the set. It is also possible to use color to indicate other properties of the region inside the set. Spirofractal uses the jigsaw color option to cycle through 10 different ways of coloring set fractals.
![]() A striking "Biomorph" image of a Julia type set. (See item viii) |
|Re(z)| > 2 This test works for the regular Mandelbrot set, and for even higher powers. But for z3 and higher odd powers numbers with no real component are not detected as being outside the set . In this mode the outside of the set is colored using the number of iterations and the value of the imaginary part of z at the final iteration. This often creates leaf-like patterns.
Re(z) > 2 This test causes thin filaments to appear to be in the set (but they are colored differently, so as not to upset the algorithm which automatically does close ups of interesting parts of the set).In this mode the outside of the set is colored using the number of iterations and the value of the imaginary part of z at the final iteration. This often creates interference patterns, especially far outside the set.
|Im(z)| > 2 . This is the inverse test to the first one. This test fails for numbers with no imaginary part. The outside of the set is colored using the number of iterations and the value of the real part of z at the final iteration. Surprisingly this has quite a different effect - the set acquires spikes.
|Re(z) >2 or |Im(z) > 2. This test works, but can take an extra iteration or two to discover some points are outside the set, so (blunt) spikes appear. The outside of the set is colored according to the product of the real and imaginary parts of z at the final iteration (a measure of how close together they are). This causes fan-like patterns to appear.
This mode uses the same test as the previous mode, but colors the points according to the argument of z at the final iteration. Points inside the set are colored according to the argument of the maximum value z attains in the attracting cycle.
|Re(z) >2 or |Im(z) > 2 (again!). The outside of the set is colored according to the difference between the real and imaginary parts of z at the final iteration. Instead of fans, very pronounced bubbles appear in the pattern, which with the right choice of colors can create a very strong 3D effect.
Part of the Julia set for 1.2i with bubble effect
|Re(z) >2 and |Im(z) > 2 . The points outside the set are colored according to the number of iterations and the value of |z|. This is another mode which causes spikes to appear, in this case lots of them and very sharp!
This first uses the ordinary |z| >2 test. Then points that would have bailed-out on test vi are colored normally, but the points that would have not bailed-out yet are colored differently. This causes a pattern of ever diminishing triangles to appear. For z2this pattern is not especially interesting but for higher powers it produces very striking patterns quite unlike any other Spirofractal patterns.This coloring technique is called "Biomorph" and was invented by Clifford Pickover.
This test uses the ordinary |z| > 2 test. However, the amount by which the values does exceed 2 is used to color areas where |z| first exceeds 2 on the same iteration differently. In this mode the interior of the set is normally color coded according to the maximum value of |z| attained in the attracting cycle for the point. This is the mode pictured in the description of the Jigsaw Color option.
In Spirofractal 4 you can force Spirofractal 4 you can use other bail-out values. There is some mathematical and aesthetic value in doing this. For example, if you use banding mode to produce a "contour map" of a Julia set, you will often find that with the default bail-out value the contours are rather asymmetrical. If you use a much higher bail-out value, such as 256, the contours are much smoother. This is because what is more interesting than the time it is first possible to tell a value is outside a set, is how quickly the value is attracted to infinity. Each point outside a set has a definite long term rate of approach to infinity, and using a higher bail-out value the contours more closely approximate points attracted to infinity at the same rate.
If you reduce the bail-out value below the minimum value then bits of the set will be carved off, making the boundary of the set less fractal. However unless you reduce the value a lot, you will almost always find that most of the set is still there, and that small versions of the complete pattern appear undamaged. In fact it is really quite amazing how often the Mandelbrot set pattern appears - perfect small copies of the Mandelbrot set appear in Hypercomplex set fractal images quite often, and tilted or flattened versions appear in quaternion set fractals. The Mandelbrot set can also appear in basin boundary fractals.
Spirofractal also has a completely different technique for constructing pictures of set fractals, which uses a "bail-in" condition rather than a "bail-out" condition. This technique also comes with 9 different jigsaw mode options. This method is quite a lot slower than when using bail out conditions, because it is necessary to monitor the ongoing behaviour of every point. However, the way the images develop is very interesting, and can give an insight into what is going on inside the set, rather than outside.
The basis of this approach, is that all the time |z| is within the bail-out distance, the point is potentially in the set. However it is obviously more likely that the point is in the set if |z| is small, or getting smaller. Spirofractal plots points using various combinations of tests like this. If a point is outside the set, then sooner or later it won't get plotted any more. Typically this approach builds up a coarse picture at first, but one which is gradually refined. The end result usually gives a clear idea of the boundary of the set, as to some extent it is built up on foundation layers, rather than being eroded from the outside. Also the different kinds of orbit of points within the set will cause the various regions of the interior to be colored differently.
This is done by making an initial guess z0 and then iterating the following formula zn=zn-1-delta where delta=f(zn-1))/f'(zn-1) where f'(z) is the derivative of f(z). This process quickly attracts z to a root of f, except when z0 is exactly half way between two roots. When that happens the iterations do not converge, and indeed usually zoom off to infinity.
f(z) has k roots, and different z0 are attracted to different roots. Each root has a fractal basin of attraction. This usually takes the form of a chain of links of ever decreasing size that converge on the origin. (The fractal is not interesting unless k=3 or more.)
It is interesting both to plot this fractal for z0 constant and varying c (analogous to Mandelbrot sets, where we equate the different roots by the argument of the root found), and for varying z0 and constant c, (analogous to Julia sets). And in the same way that Spirofractal plots other cross sections of the 4 dimensional set object, it plots other cross sections of this fractal boundary.
The same relationship occurs between the Mandelbrot and Julia type sets of this fractal, as with set fractals - the Julia type fractals have one more degree of rotational symmetry than the Mandelbrot types.
If you enable Attractor singularity option when displaying Basin boundary fractals Spirofractal switches to polynomials of the form
This gives rise to truly bizarre images. For example, if you choose the parameters that would generate Mandelbrot sets, (z0=0, and c varying), the fractal at first sight looks similar, except that the chains no longer meet. But look closely and you will find many small and almost perfect copies of the Mandelbrot set, surrounded by a tangle of tiny chains. These chains contain things that look like Julia sets, as well as more and more tiny Mandelbrot sets. I believe that in the Mandelbrot regions the iterations go into various periodic orbits, and neither converge to a root of the polynomial or zoom off to infinity, but I haven't investigated in detail yet.
Another interesting variation on Basin Boundary Fractals arises if you multiply the delta to be subtracted to get from one value of z to the next by a constant value fairly close to 1. This type of pattern is implemented as one of the new "other" pattern types, called Newton Relax. The multiplier of the delta is called a relaxation coefficient, hence the name. This technique is sometimes used when trying to solve mathematical equations numerically. Normally a real number close to 1 is chosen - the fun starts when you pick a complex number instead.
Spirofractal 4 introduces fractals based on Quaternions, which are a 4 dimensional extension of complex numbers, and another similar type of number called Hypercomplex numbers. They were invented in 1843 by the Irish physicist William Rowan Hamilton.
Ordinary complex numbers are of the form x*1+y*i where x and y are real (ordinary) numbers and i*i=-1. x is called the real part, and y the imaginary part, though personally I find i a lot less imaginary than many so called real numbers. Quaternions and hypercomplex numbers both take the form x.1+y*i+z*j+w*k, where in both cases i*i=j*j=-1, but k*k=-1 for Quaternions, and 1 for Hyper Complex numbers. For Quaternions ij=k jk=i ki=j and ji=-k kj=-i and ki=-j. for Hypercomplex numbers ij=ji-k jk=kj=-i ki=ik=-j.
Quaternions form what is known as a skew field, which means division is always possible (except for 0), but multiplication and division are not generally commutative. With hypercomplex numbers division is not always possible, as the product of two non zero numbers can be zero.
The formulas for Set Fractals and Basin Boundary fractals generalise quite nicely in both cases.
A Cellular Automaton is a mathematical system consisting of objects which have a finite number of states. The objects interact with each other according to simple rules which may cause the state of one or more objects to change. A cellular automaton is interesting if complex or unpredictable patterns of behaviour arise.
The two most common types of automaton are ant automata, where there are two types of object: ants and cells; and Wolfram cellular automata, where there are just cells.
The original ant automaton, Langton's ant works like this:
This ant always tries to escape from the rectangle, no matter how big you make it. The reason for this is as follows:
What turns out to be interesting is the manner of the ant's escape - it seems that the ant always ends up "building a highway". where it moves off in a straight diagonal line, by endlessly going through a cycle of 104 moves that transports it two squares diagonally. It seems to do this no matter how the squares it moves on are initially colored. As far as I know nobody has yet managed to prove this conclusively.
Spirofractal generalises the ant automaton as follows:
In fact this is still a slight simplification of how Spirofractal ants move. Rather than allowing turns through multiple of 90° say for square symmetry, multiples of 45° are used. Similarly for triangular and hexagonal symmetry multiples of 30° are used. The reason for this is purely to improve the appearance of the patterns, as otherwise unpleasant lines appear in the patterns.
Secondly, the ants do not decide independently by how much to turn. The first ant looks at the color of the square it is on, and turns by the appropriate amount, and all the other ants turn by the same amount. The reason for this is that otherwise the ants would not move in a symmetrical pattern, unless ants always turned by a multiple of 90° (and in this case they would all turn by the same amount anyway). When mirror symmetry is turned on there are two ants facing in each direction, and when one turns clockwise by a certain amount, the other turns anti-clockwise by the same amount.
When two or more ants move from the same square, its color is incremented the appropriate number of times.
When jigsaw color is turned on the color of squares changes by a different rule. Each ant has a favorite color, if the square the ant moves from is any other color the color is changed to the ant's favorite color, if it is already that color, the square turns black.
With this type of cellular automaton the basic idea is to start with a group of cells, represented by pixels on the screen, some of which are dead, and some alive. Depending on its state and the state of the cells around it, each live cell can either die or survive into the next generation, and each dead cell can stay dead or be born. The "Game of Life" invented by John Conway, is one very famous kind of two dimensional cellular automaton of this type. There is a grid of cells which may be alive or dead, where cells are only born if they have three live neighbours, and only survive if they have two or three neighbours.
The cellular automata in Spirofractal are a little different - they are only one dimensional. There is one line of pixels (considered to be joined at the ends). Each generation is shown below the one above it. Depending on the initial state and the rules used to determine whether cells live or die different patterns are generated. Many configurations are fairly uninteresting - they lead to patterns of all living or all dead cells, or to other stable configurations. However some rules generate moderately interesting patterns (patterns reminiscent of the Sierpiński triangle are frequently generated). (On the whole they are not as interesting as the other kinds of Spirofractal image, so they are not generated so often when the timer is on). Even in the simple case, where the rule is based only on the state of the cell and its immediate neighbours (known as type 2,1 automata) there are 256 different possible rules. If you consider all the cells within a distance of two (type 2,2) there are over 4 billion possible rules!. The number of combinations can be further increased by not viewing cells as simply alive or dead, but as being in one of a number of different possible states with different rules for breeding based on their state (color). With just three states there are 7600 billion possible rules even just considering the immediate neighbours (type 3,1) (compared with 256 for when there are two states!). These numbers are slightly misleading. In fact each rule can be represented as a fairly short number. For example in the simple two color one neighbour case there are only 8 possible states. Any rule can be specified by specifying the cell state that arises from that state. This means that rule corresponds to an 8 digit binary number. For the type 3,1 automaton any rule can be expressed as a 27 digit ternary number. Many rules can in fact be expressed in a much shorter way. For example a rule might be to simply count the number of cells that were alive within the maximum distance and to determine the state of the cell based on this. In the 2,1 case rules of this type can be expressed as a 4 digit binary number.
Spirofractal will generate automata with up to 255 states, considering the state of neighbours up to a distance of 7. Now even for a 9,2 type automaton the rule would be a number 59,000 digits long. Spirofractal uses a different approach. Rather than having an explicit rule the the state of the neighbourhood of each cell is converted to a numerical value. Sometimes this is done in a way which associates each state with a different number, and sometimes it is done in a way which loses some information, (for example by ignoring the position of each cell, or by considering some colors to be the same). The number this gives rise to, the neighbourhood state value, is then transformed into a another number by three simple arithmetical operations: multiplication by one number; XOR with a second number; and then taking the modulus (remainder after division) with respect to a third number. Finally the modulus of this number with respect to the number of states is taken to determine the new state of the cell. Probably any rule could be expressed like this (providing you used sufficiently large numbers), though I have no idea whether anyone has looked into this. Certainly all the possible 2,1 rules are generated over quite a small range of values for these three numbers, the other cases are rather hard to verify experimentally.
The type of rule is shown in the title bar as follows:
If a complete rule string can be shown in 32 characters or less it is determined and shown after the rule type. The first number is the new state of the cell when the neighbourhood state value was 0, the second when it is 1 and so on.
If you change the symmetry degree without randomising the rule, the rule type may still change. For example CI rules are PS when only two states are in use. Also a PS or CI rule may well degenerate into one of the non positional sensitive rule types.
I am indebted to the book "Symmetry in Chaos" by Michael Field and Martin Golubitsky (ISBN 0-19-853688-7) for the algorithms used to generate rotational symmetry for C.A.T. fractals, Complex Attractors, and Tiles. The book "Fractals for the Classroom", by Peitgen, Jürgens, and Saupe has given me an insight into some of the more abstruse aspects of set fractals. The book "Geometry from Africa", by Paulus Gerdes, while it has nothing much to do with fractals, has inspired some of the new pattern colorings in Spirofractal 4.
The Quadratic attractors are based on a Java applet by J.C Sprott, who has a very large and informative web site with a lot of information on strange attractors and fractals.
The Basin Boundary Fractals in Spirofractal are partially based on fractals in FractInt, which I extended by analogy with Julia and Mandelbrot sets. Some of the alternate methods of coloring Set Fractals is also based on ideas in FractInt.
Many of the "other patterns" introduced in Spirofractal 4, are also adapted from FractInt, as are the Escher patterns and quaternion/hyper complex set fractals, though in most cases there are variations on the FractInt originals. See the Pattern Maker program for credits for the individual pattern types.
I was introduced to Langton's ant by the book "The Collapse of Chaos" by Jack Cohen and Ian Stewart.
The code to save files in JPEG format is courtesy of the Independent JPEG group.
Most of the rest of Spirofractal (all the Fractal special effects and distortions, the animations, the color variations, the algorithms used to select interesting patterns), ant automata, and the method used for creating Wolfram cellular automata is my own invention, though doubtless it has been invented better by someone else already.
Spirofractal version 4 is built with the Intel C compiler and contains large chunks of assembly language.
There are a large number of web sites devoted to fractals, strange attractors and cellular automata, and any web search using these words will come up with useful results. A good technical starting point is the Fractal FAQ.
There is a freeware program called FractInt which generates a vast number of different types of pattern. It probably does far more than Spirofractal. Unfortunately it is somewhat daunting to use, at least for novices.