AMIGA IFSOUT Version 1.1 An Iterated Function System Viewer Copyright © 1989 Software Glen Co. Permission is hereby given to only copy this unedited documentation for inclusion with the demo-version of the program. INTRODUCTION ------------ IFSOUT graphically displays iterated function systems and allows the user to interactively create the affine functions that define such systems. An IFS can represent complex pictures very compactly. Simple IFSs can describe an infinite number of different and interesting fractal displays. Some of these pictures are remenisent of plants, ferns, bushes, trees, snails, shells, sunsets and other natural objects, plus a number of other interesting patterns. Included with the program are a number of displays that the author and others have discovered. These are in a directory named coors. What is an iterated function system (IFS)? An IFS is a set of functions that define transformations on a Cartesian space. Each of these functions is a rule of affine transformation. An affine function has the form of: W(x,y) = (Ax + By + E, Cx + Dy + F) where: A,B,C,D,E,F are real number transformation coefficients. So an affine function maps each point in the Cartesian Space to another point in the Cartesian Space. To compute an IFS image each affine function is randomly applied to the last computed point. This process is repeated over and over, resulting in a picture of the IFS as those points are displayed. THE PROGRAM - TUTORIAL --- ------- -------- Ifsout is simple to use. To run ifsout or ifsdemo for the demo version, just double click on the ifsout (ifsdemo) icon, or type ifsout (ifsdemo) in a CLI shell (stack should be > 30000). Ifsout takes no arguements. Ifsout creates its own screen and begins to display a default function, a small flower. Before starting, you should know how to get back to the previous screen (usually the Workbench). To do so, use the Project Menu and click on the "Back to WB" box There are no Front/Back gadgets, but there is a hidden Close gadget in the normal left-hand corner. It almost goes without saying, to quit, click on the "quit" box in the Project menu. Try some different functions. Use the Project Menu and click on the "Get IFS" menu. This will bring up a file requester like window to allow selection of a number of "coors" (IFS coordinate files) files. No, it has no relationship to the beer! Thanks goes to C. Heath for the file browser requester. It expects to find a coors directory (democoors for the demo version) on the current default device. (i.e. if you started ifsout from RAD: it would expect to find a coors directory in RAD:) If there is no directory there you will get a "Wrong Diskett?" message. If this happens, just click on OK and type in the path of your "coors" directory in the Get File Requester string gadget. Included with this distribution is a coors directory with all the IFSs in separate files. The displaying of the transformation numbers (those are the coefficients of the functions) can be toggled by clicking on the "Numbers" box in the "Control" Menu. The eight numbers displayed for each affine function are: function number, A, B, C, D, E, F coefficients, percentage The coefficients are the ones in the above defined affine function. The percentage is the probability that the function will be randomly chosen. The sum of all the probabilities should total 1.00 or some functions will not get exercised as they should. Try to change the function using the transformation boxes. Click on the "Boxes" box in the "Control" Menu. This will bring up a number of boxes. Each box represents a transformation function. One can change the function by grabbing a corner of any box. Note: If two boxes' corners are in the same position as the "selected" function (highlighted in white) will be moved. One can change the "selected" function by clicking the left-mouse button away from the boxes when the boxes are showing. Notice that the corner with the small box control the E and F coefficients of the function, the opposite corner controls a combination of the A and D cofficients, the near corner (the one with the small box) controls a combination of A and C coefficients, and the other corner (the one opposite of the small triangle) controls a combination of the B and D cofficients. The small box is used to determine the orientation of the transformation. The program can display a IFS with 25 or less affine transformations. Take a look at Sierpinski's Triangle by selecting the "Get IFS" menu function and selecting sier.coors file. This function takes three transforms. As you can see the images look as if they are "developing". Some images look better if they "cook" longer and other look best when they have only "cooked" for a short time. Sometimes the function might disappear from your view as you are manipulating them. This is because the coefficients can also change the location of display. To get the image back into a viewing position select the "Zoom To Fit" box in the Functions menu. This not only centers the image but sizes it to about 85% of screen size. This function can also be used to make a very small/large image larger/smaller. Also in the "Functions" menu there is another to contol the scale of the display. It is called "Zoom Out X 2" and should be self-explainatory. Try some of the miscellanous functions. If you have received the "paid-for" version you can save the functions that you create. To save your function click on the "Save IFS" box in the Projects menu. Your function will be saved with the name you specify. Another toggle allows you to create a white background. You can also get a new function. The coeffiecents of the new function are set to A, D, = 1 and the rest = 0. This does not effect the outcome of the current IFS except to add a new color and to change the percentage of the functions fo the IFS display. Notice that each affine function has its own color. You can change the color of the functions displayed by clicking the left mouse button when the boxes are NOT displayed. The colors are selected at random. There is also a pause toggle. IFSOUT program is rather compute intensive. The pause toggle allows the program to go to sleep until it is toggled again. This allows the processor to do other things quicker (like capturing the screen with any of the screensaving programs). NOTE: BE CAREFUL WITH THIS SWITCH as it makes the program look dead and unresponsive to any requests except some menu selections (like the toggle itself and the QUIT funciton). Another way to change the coeficients is by the use of the "Adjust Functions" requester which can be found in the Functions menu. The Adjust Functions requester consists of four areas of control. The first method of control is the current function's coeficients. These are changeable. You can request additional functions by typing in a function number (WN) lager than the current number of functions. If you type in a function less than the current number of functions, it will give you that function. The second area of control is the horizonal slider gadgets next to the function number, coeficients and percent text input areas. They also control the same functions as the text input areas. To change a function number just click on either side of the slider. This slider does not allow you to add additional functions but is very useful in tracking down a function (by number) quickly. The third area of control is the Zoom Slider. It allows you to Zoom in (down) or out (up) a particular IFS. The fourth area of control is the Positioner Gadget. This allows you to position the current IFS on the screen. Sometimes when you are Zooming into the function it changes the center. This allows you to center it to your preverance. A tip: If you have the version that allows saving IFSs you can create a directory named coors in your RAD or RAM disk for rapid saving of IFS functions. Last NOTE: Be careful not to use the democoors files with the production system or the coors files with the demo version or "bad" things happen (guru). THE CHALLENGE --- --------- Get the file glen.coors. Notice that I have defined my name as an IFS. Not a real easy task, but as you can see it can be done. Can you create an IFS for your name? ADVERTISEMENT ------------- The demo-version does not have the ability to save functions, it also stores its transforms in binary form. The production version writes its transforms in ASCII (so you can edit them) and comes with many more IFS defined. Other than that the demo-version and the "paid-for" version are the same. To get the production copy, send $10 to: Glen Fullmer 9605 South 48th St. #1059 Phoenix, AZ 85044 I would also like to hear from you if you find any new and interesting IFSs. I hope you have as much fun with this as I have. There would probably be many more program features if searching for new IFSs wasn't so distracting! Enjoy.