Fractal Designer v3.08 by Doug Nelson Jan 24, 1990 Introduction o - This is a tool that can generate a billion billion unique fractals. o - The executable program is submitted to the public domain. I would appreciate comments on improvements or enhancements. o - This is not a Mandlebrot set or Julia set fractal program. o - If you have a supported printer, you can document your fractals and print a high-resolution fractal using the "virtual screen" option. o - Fdesign 3.07 displays differently than Fdesign 2.05. * The aspect ratio of triangle transformations is preserved (this turns out to be mathematically important). The "auto-scaling" will cause the attractor to span either the y direction or the x direction, not necessarily both. As a result, some of your fractals from v2.05 will display differently than before. o - Fdesign 3.07 .TRN files cannot be read by Fdesign 2.05 or earlier. The file format has changed to provide "fractional" pixel locations for triangles. However Fdesign 3.07 CAN read files from any earlier revision. Hardware Requirements o - An 80x87 is a must to make this program fun. * To give you an idea of coprocessor enhancement: an 8 MHz XT w/coprocessor > a 20 MHz 386 w/o coprocessor o - The program requires either EGA or VGA graphics. VGA is much better because the pixel size is square. (Sorry EGA fans, I didn't scale for odd-sized pixels). o - A mouse is a must. In developing this program I used a Microsoft mouse, but have found some so-called "compatibles" that do not support a screen cursor. o - It also requires 350k bytes of free memory on an IBM PC-compatible computer (less if "Virtual Screen Print" is not used). o - A printer must be able to receive commands for one of these: * HP Laser Jet II P --- the best pictures * Epson 24 pin compatible --- I used an LQ-1000 for testing * Epson 9 pin compatible --- I used an early FX series model Revisions o - v3.08 - more enhancements: * A command line option to view .TRN files. * You may have up to 32 triangle transformations. * Zooming support on main screen and "virtual screen print". * GIF file saving. * IFS codes and FRACTINT interface * Color codes exclude WHITE, DARKGREY, and BLACK. * Two video "modes" available: # Normal plot --- color codes the triangle transformations (or IFS codes). # Alternate display --- increments the color code every time a pixel is plotted (shows density). o - v2.05 - lots of enhancements: * A bug that caused a floating point domain error has been removed. * Three printer types are supported. * A "virtual screen" has been added with 1504x1200 resolution (used only for printing). * File menu now shows a little plot from the filename you click on. * 256 color plotting added. * You may turn off the graticule spacing when adjusting triangle transformations. * Menus have been "cleaned up". o - v1.00 - added the 'small plot' to the Modify screen and the 'adjust triangle' command. o - v0.01 - the first distributed copy of FDESIGN. Basic Fractal Education o - Not all fractals can be generated by this program. o - IFS stands for Iterative Function System, just one method of generating fractals. o - The IFS fractals define a space which has a "fractional" dimension. This space has a "shape" defined by the IFS codes. o - Each IFS code is derived from a "transformation". At least two transformations are required to generate a fractal. o - The triangle transformations. * (The following may not be strictly correct) * IFS codes are derived from Affine transformations. A transformation triangle maps "from" the reference triangle "to" the transformation triangle itself. * An Affine transformation moves points closer together. In general, a transformation triangle must be smaller than the reference triangle. More specifically, the A-B side of the transformation triangle must be shorter than or equal to the A-B side of the reference triangle. The same is true of the B-C and A-C sides. * However, a transformation triangle may not have all three sides equal to the reference triangle. * The program will display an error message if you attempt to input a non-Affine transformation triangle. # You can re-define the reference triangle by a "Scratch Everything" command. o - Random IFS Algorithm * A beginning point is selected which is on the fractal. * A transformation triangle (IFS code) is randomly selected. * The selected transformation is applied to the current point and the new point is plotted. * One down, millions to go. * Goto back to randomly select a transformation triangle (may or may not be the same as the transformation just applied). * That's all there is to it. Amazingly simple isn't it? The problems are in the user interface. * Even though the transformations are randomly selected, the resultant image is the same (by mathematical proof). Given infinite time, the resultant image has infinite detail, so the algorithm repeats until you interrupt with a mouse click. o - The references will give you everything you ever wanted to know on the theoretical basis for these images. Running the program o - As a warning, if you don't have a coprocessor, the delays may be intolerable. o - To view a fractal (no mouse required) from the command line: * fdesign sierpink or for %1 in (*.trn) do fdesign %1 to view all .TRN files in the directory o - For interactive design, type "fdesign" return. o - The mouse is used for most prompting. Hit the mouse button for the top menu (without a coprocessor you may have to hold the mouse button down until the menu appears). o - The Top Menu screen: * Normal Plot - plots (to the screen) the current fractal in EGA or VGA 16 colors. * Edit Transformations screen - allows you to change the description of the fractal (edit triangle transformations). # If the transformations are complete enough, a small fractal image is displayed concurrent with your edits. # Scratch Everything - cleans the workspace. Then you specify a reference triangle and input transformation triangles until your right mouse button ends the input. # Add a Triangle - you input three points defining an additional triangle. # Delete a Triangle - you select a triangle to delete. # Adjust a Triangle - allows you to move a single vertex of a triangle. First select a triangle by finding an unambiguous edge of the triangle and click left. Then click on the corner you wish to move. Now you may move the cursor to the new position and click left. The fractal image in the upper right updates with your edits. You may continue to click left and watch the fractal change in the upper right corner. When you're satisfied, click the right mouse button. # Grat is on/off - clicking on this will toggle the "on/off". If grat is off, you may place triangle vertices between dots. If grat is on, the closest graticule will be used to place the vertex. # Main Menu - return to plot fractal on the big screen. * Load file screen - load a transformation (.TRN) file. # You may click left on a filename to preview the fractal in that file. # When you see the one you want, click right. # You will be thrown into the Edit Transformations Screen. If you want a big screen image, click on "Main Menu" immediately. # I have included several .TRN files which you may load, display and modify. * Save file - save the current transformations to a file. # Type in the filename (without extension) that you wish to save the transformations to. # If the filename already exists, you will be prompted for an ok. # Saving to another subdirectory or disk is not supported. * Alternate display - plots in 16 colors, but starts with color 1 and increments the color every time a pixel is re-plotted. * Print - Prints the filename, the current screen, the Edit Transformations and IFS codes. This is intended as a way to document your fractals. * Virtual Screen Print - Use this to create high-res pictures on a printer. # Plot 1000000 points - Plots to a virtual screen (1504x1200) a million points. I've found a million to be adequate for most images. This number will increase if you have already zoomed on the image. This number is only a recommendation by a very dumb algorithm. # Plot N points - Again, this plots to the virtual screen as many points as you specify. It occasionally happens that you may need to plot 20 million points to get a full picture. You specify the number of points in thousands (5000 means 5 million). # Print - prints the virtual screen to your printer on LPT1. # Return - gets you back to the top menu. * IFS codes (FRACTINT) # Write a FRACTINT file --- computes IFS codes for FRACTINT's screen size and writes an ascii file with an extension of .IFS. FRACTINT viewing is accomplished with the following command line: FRACTINT type=ifs ifs=myfile.ifs video=F4 You would, of course, replace 'F4' with your own video mode preference from the help screens. # Read a FRACTINT file --- computes triangle transformations from the IFS codes. Allows you to edit the transformations and then save as a .TRN file or a .IFS file (for FRACTINT viewing). # IFS codes for this screen --- these are a,b,c,d,e,f,p used to generate the main display. Note that no scaling to the display is required --- the IFS codes are already scaled for it. * Zoom in # Brings up a zoom box. # The box may be moved by moving the mouse. # The size of the box may be changed by holding the left mouse button and moving the mouse up or down. # To accept the zoom box, type any key. # Multiple zooming is allowed, but know that the computation time required increases with every zoom. * Zoom reset - reset to the original full-sized image. * Save to .GIF - makes a copy of the screen to a .GIF file. * Quit - returns you to DOS. Future Enhancements o - 3-D fractals (anyone know how to input tetrahedrons nicely?) o - Variable "virtual screen" size o - TIFF file saving (if I can find the necessary technical info). Tips on Building Fractals o - Experiment with only two transformation triangles. There is a lot a of creativity in some of those two triangle transformations. Then add a triangle and experiment with various rotations and scalings. o - Start with one of the example files and adjust a corner and watch the progress. o - When adding a triangle, start with a small triangle and adjust its corners while watching the fractal in the upper right corner. o - Make the colored regions "just touching" to create interesting connections. o - Expert fractal designers are made by 99% perspiration. I'm lucky to get one out of five that has any lasting appeal. To me, creating fractals seems like a very intuitive process. I've designed the user interface to facilitate a quick design cycle. References o - An excellent starting reference is "Fractals Everywhere" by Michael Barnsley. o - BYTE magazine, January 1988. o - A good reference is "The Science of Fractal Images" by M.F. Barnsley, R.L. Devaney, B.B. Mandlebrot, H.-O. Peitgen, D. Saupe, and R.F. Voss with contributions by Y. Fisher and M. McGuire. o - Thanks to Bert Tyler [73477,433] (CIS) and Lee Daniel Crocker [73407,2030] (CIS) for their .GIF encoder. Send any comments or suggestions to: Doug Nelson 1002 San Jacinto #316 Arbors Irving, TX 75063 Compuserve ID 70431,3374 SouthWest PC Users Group BBS 214-790-8960 ID=DOUG NELSON