File List:
----------
readme.txt (the file your reading now)
whatsnew.txt (version history)
RIFS.ini (initialization file; must be in the same directory as RIFS.exe)
RIFS.bas (Microsoft Visual Basic 3.0 source code that's responsible for
   setting the transforms and plotting and coloring points)
VBRUN300.DLL (Visual Basic 3 Runtime DLL; must be in the Windows System 
   directory, i.e. C:\WINDOWS\SYSTEM)
RIFS.exe (the program itself)


Description:
------------
Random Iterated Functions Systems (for lack of a better name) plots the 
attractors of four iterated function systems (gasket, crystal, leaf, and 
fern) using one of four coloring methods (black and white, by transform,
random, and blend).  You can control the number of iterations and the update 
interval, and the program has Auto Clear and Show Elapsed Time options.  

Random Iterated Functions Systems is freely distributable e-mail ware.  If
you like it or have any suggestions, send a message to me at
<webguy@fatdays.com>.  You get bonus points if you make me laugh or wax
philosophical.  RIFS.exe was written in Microsoft Visual Basic 3.  It should
run under any version of Windows.


Installation:
-------------
1. Extract all the files in the .ZIP file into a new directory, e.g. C:\RIFS
2. If you don't have it already, copy VBRUN300.DLL to C:\WINDOWS\SYSTEM.  
   Otherwise, you can delete it.
3. Run RIFS.exe


Un-installation:
----------------
Just remove the entire directory you created in Step 1 above.


How does it work?:
------------------
The random algorithm for implementing iterated function systems (also known 
as the chaos game) can be outlined as follows:

1. Calculate the fixed point [p0 = (X,Y)] of the first affine transformation 
   (T1) to use as a starting point.

X = (-Transforms(1, 5) * (Transforms(1, 4) - 1) + Transforms(1, 2) * 
    Transforms(1, 6)) / ((Transforms(1, 1) - 1) * (Transforms(1, 4) - 1) - 
    Transforms(1, 2) * Transforms(1, 3))
Y = (-Transforms(1, 6) * (Transforms(1, 1) - 1) + Transforms(1, 3) * 
    Transforms(1, 5)) / ((Transforms(1, 1) - 1) * (Transforms(1, 4) - 1) - 
    Transforms(1, 2) * Transforms(1, 3))
  
2. Randomly choose one affine transformation and apply it to p0 to get the 
   next point [p1 = (NewX, NewY)].

RandNum = Int(UBound(Transforms) * Rnd + 1)
NewX = Transforms(RandNum, 1) * X + Transforms(RandNum, 2) * Y + 
       Transforms(RandNum, 5)
NewY = Transforms(RandNum, 3) * X + Transforms(RandNum, 4) * Y + 
       Transforms(RandNum, 6)

3. Plot the new point.

frmForm.PSet (NewX, NewY)

4. Continue to randomly apply one of the transformations to each new point, 
   plotting the resultant point.

Symbolically,

p0 = starting point
p1 = T1(p0) or T2(p0) or T3(p0) . . .
p2 = T1(p1) or T2(p1) or T3(p1) . . .

The amazing thing about random iterated function systems is that the 
attractor produced is independent of the starting point, which can be 
arbitrarily chosen.  The only reason a fixed point was chosen as the 
starting point in Step 1 above is because the fixed point is part of the 
attractor, so using it as the starting point eliminates transient behavior 
at the beginning of the construction.  Random iterated function systems 
demonstrate how a random process can generate completely deterministic 
output.

RIFS.bas contains the transforms that RIFS.exe uses as well as the code 
responsible for plotting and coloring points.


Additional Resources:
---------------------
To learn more about the chaos game, Sierpinski gasket, and iterated function 
systems, see sections 4.1 and 4.2 of Fractals and Chaos by Richard M. 
Crownover and Chapter 6 of Chaos and Fractals: New Frontiers of Science by 
Peitgen, Jurgens, and Saupe (ISBN 0-387-97903-4).  Also, check out my 
fractal page on the World Wide Web at http://www.fatdays.com/fractals/


Future Enhancements (AKA To Do List):
-------------------------------------
1. Snazzier name (any suggestions?)
2. 32-bit version written in Microsoft Visual Basic 5
3. Setup program
4. More attractors and coloring methods
5. Possibly add support for user-defined attractors
6. Possibly add support for printing attractors and/or writing them to .GIF 
   files


Last modified: August 10, 1997

Brian H. Marston
webguy@fatdays.com
http://www.fatdays.com/
