@database Fractal.guide @node main "Fractal" Copyright 1994 by Timothy B. Kreuzer. All rights reserved. Version : 1.3 Author: Tim Kreuzer (and the KreuzerSoft support team) Language: SAC/C V6.5 @{"Features" link features} @{"Limitations" link limitations} @{"Release Notes" link releasenotes} @{"Notes from the Author" link notesfromtheauthor} @{"Getting started with Fractal" link gettingstarted} @{"Getting the most out of Fractal" link gettingthemost} @{"Fractal starting points" link fractalstartingpoints} @{"Special Plasma notes" link specialplasmanotes} @{"Explanation of the Fractal user interface" link explanation} @{"Icon Tooltypes" link icontooltypes} @{"Credits" link credits} @{"Contacting the Author" link contactingtheauthor} @{"Legal Stuff" link legalstuff} @{"KreuzerSoft Products" link kreuzersoftproducts} @endnode @node features "Features" Opens on the default public screen (initially the Workbench) Usable on any screen with at least 2 "free" pens Avoids usage of all pens already "obtained" upon program start (i.e., AmigaDOS 3.0 "Protected Pen" compliant) Separate user interface and drawing windows Resizable drawing window with point-and-click Zoom-In and centering functions Adjustable Zoom-Out function Contents of drawing window can be saved to a standard IFF/ILBM file Full GadTools Intuition interface Supports the following types of fractals: - Mandelbrot - Julia Set - Magnetism - Lambda Exponential - Lambda Cosine - Biomorph - Plasma All math done in double precision floating point Separate versions for: - 68020 without FPU (stock A1200 and A4000/030) - 68020 with FPU (improved A1200 and A4000/030) - 68040 (stock A4000/040) "Smart" iconify function Help text (displayed on screen banner) for the Zoom In and Center actions Recommended for use with my PaletteTool and PST programs(!) Tested OK using the Enforcer @endnode @node limitations "Limitations" Can only be used from the Workbench (start via Icon) Requires AmigaDOS 3.0+ and the AGA chipset FPU (68881/68882) highly recommended for maximum enjoyment! Designed for use with higher-resolution screen modes (640x400 and higher). Note that this does NOT mean the program will not work on lower-resolution screens. What it DOES mean is that you may find the programs windows take up a lot of screen "real estate" on lower-resolution screens For some reason, the program leaves 104 bytes allocated when it terminates. I have been unable to ascertain exactly where this memory is not being freed @endnode @node releasenotes "Release Notes" ----------------- Version 1.3 Notes ----------------- 1) Completely reworked the user interface: - Moved X-Y Coordinates to a separate window - Added keyboard equivalents - Controls window is now smaller than in previous versions - Auto-redraw no longer happens when the draw window is resized 2) Added the "Plasma" fractal type 3) Added the Save functionality ----------------- Version 1.2 Notes ----------------- 1) Added a few optimizations which increased rendering speed The Mandelbrot and Julia fractal types are especially faster than before! 2) Fixed bug where the Draw window's max dimensions were limited to 640x400. Should now be whatever the default Public Screens dimensions are 3) Reworked entire user interface: - Added "Pause" button/functionality - Changed Zoom Out level-selection from slider gadget to cycle gadget - Added "help text" in screen banner for Draw/Pause/ZoomIn/Center functions - Added "smart iconify" ("I" button) functionality for the Controls window - Added "About" button/functionality 4) Rendering will now automatically begin upon the following actions: - Draw window resizing - Zoom Out button selection - After picking the "lower right-hand" corner of a Zoom In action ----------------- Version 1.1 Notes ----------------- 1) Added five new fractal types 2) Added the ability to cancel an in-progress "Draw" via the new "Stop" button 3) Modified the existing "Center" function so that it operates more "graphically" (via a cross-hair in the Fractal drawing window) 4) Added more gadget "disabling" during Zoom/Center functions to help the user not get things confused 5) Slight reworking of the Control window layout 6) Corrected flaw in Control window which kept it from being Iconfied or Menufied for those like me who use the PD programs bearing the same names 7) Changed position of the "window resize" gadget in the Fractal drawing window (MUCH nicer looking now!) @endnode @node notesfromtheauthor "Notes from the Author" I hope you enjoy Fractal, and perhaps enjoyed the previous versions of this program. Fractal is intended to be different that most other fractal types of programs - it does not open it's own screen, but relies upon you (the user) to have the (default Public) screen already setup This allows Fractal to be used from any potential screen mode, including those available from the various graphics cards now available Since many people now have "high color" Workbench screens, you may find that using Fractal in this environment is sufficient Remember that Fractal operates on the default Public Screen. There are many utilities out there that allow you to make certain screens the default public screen. My personal fave is my own "PST" program, which allows you to open a Public Screen at any supported resolution/depth, and to also make that Public Screen the default one I intentionally did NOT include a color-palette-control within Fractal. It seems to me that programs that operate on a Public Screen basis should have a centralized (i.e. separate) palette control (which is exactly what my PaletteTool program is for) You should DEFINITELY try and get your hands on my PaletteTool program, as it greatly simplies the method of setting up the colors on any default Public Screen @endnode @node gettingstarted "Getting started with Fractal" Just click on the Fractal icon Fractal will detect the number of "free" pens available on the default Public Screen (initially the Workbench), and open it's control and drawing windows on this screen After both windows open, select the Draw button in the Controls window The start-up fractal type of Mandelbrot will then be drawn in the Fractal drawing window @endnode @node gettingthemost "Getting the most out of Fractal" 1) Read the documentation! 2) Run Fractal on higher resolution screens to get the most detailed images Run Fractal on screens with higher "# of colors" to get the most colorful images You can adjust the resolution and "# of colors" used by Fractal by: a) Changing these limits for the Workbench screen (via the ScreenMode program in your Preferences drawer) b) Creating a (default) Public Screen of any resolution/depth supported by your Amiga using my PST (Public Screen Tool) program The latter option (b) is recommended by the Author 3) Take control of the coloring of your Fractal images The color pen scheme used by Fractal is identical to that used by my PaletteTool program (in it's "Protect" palette mode) PaletteTool can/should be used to "color" your Fractal image Try using multiple color "spreads" for breathtaking Fractal images BELIEVE ME - Playing around with the Fractal image's colors can result in a "blah" looking Fractal coming to life! 4) Use color cycling for truly exciting effects Starting with V1.1, PaletteTool supports cycling of the Public Screen palette in either direction and allows you to control the speed of the cycling 5) Use the ability to size/shape the Fractal drawing window to your advantage! ---------------------------------------------------------------------- Keep the window small while you experiment. Remember that the larger the window, the longer (in general) it will take to render an image You can always increase the window size once you've got a image worked out at a smaller window size ---------------------------------------------------------------------- Also, try wide-and-short and tall-and-thin window sizes for interesting effects 6) Experiment! You can always hit the "Pause" and/or "Stop" buttons if your image is either taking too long to draw or you want to free-up some CPU resources for other things If you really get "lost" in an image, you can always Zoom Out to "get your bearings back" Keep the Depth value low while you get confortable with a given fractal type and how it's input values work Keep the Depth value low if you are using the non-FPU version of Fractal, so that you get more immediate gratification Remember that the greater the Depth, the longer (and more detailed) the Fractal image (usually) will be. Larger Depth values also cause more colors to be used in the Fractal image Modify the various parameters SLIGHTLY while you get a feel for how they are affecting the fractal image. This will help you avoid getting frustrated @endnode @node fractalstartingpoints "Fractal starting points" 1) Mandelbrot Keep the Depth value at-or-below 50 Increase Depth value as you Zoom In 2) Julia Real Constant - try values around -110 Imaginary Constant - try values around 25 Keep the Depth value at-or-below 50 Increase Depth value as you Zoom In 3) Magnetism Real Constant - try values around 400 Imaginary Constant - try values around 0 Keep the Depth value at-or-below 50 4) LambdaExpZ (Lambda Exponent Z) Lambda Constant - try values around 100 Keep the Depth value at-or-below 50 5) LambdaCosZ (Lambda Cosize Z) Lambda Constant - try values around 100 Keep the Depth value at-or-below 50 Increase Depth value as you Zoom In 6) Biomorph Real Constant - try values around 50 Imaginary Constant - try values around 0 Keep the Depth value at-or-below 50 @endnode @node specialplasmanotes "Special Plasma notes" The "Plasma" fractal type operates differently that all the other types: - "Plasma" is completely random in nature, and as such does not have any X/Y-Coordinates. In fact, the X/Y Coordinates window is disabled when you select this fractal type - The "Plasma" fractal is based completely on the existing screen palette when the "Draw" button is selected. Random colors (within the screen palette) are selected as starting points. The generation of the "Plasma" image is based upon averaged colors in relation to these starting points Note that these averaged colors are obtained via "best match" comparisons with the screens palette. The current screen palette is NOT modified by "Plasma" Therefore, to obtain the BEST results, it is highly recommended that you set up the screen palette with spreads of two to four colors before starting the "Plasma" draw. My PaletteTool program is very handy for doing this - The "Depth" slider does not relate to "iterative depth", but rather the degree to which the color "randomization" will deviate. For example, if the Depth is set to 10, the randomized colors will deviate only within 10 Red/Green/Blue values (out of 256 possible) Assuming you've set up a screen palette with just a few color spreads, I've found that values between 250 and 350 yield the best results - Plasma fractals are excellent for use with color cycling. For the best results: - Set up a spread between the first usable palette color and the last usable palette color (try using White (R/G/B = 255) and Blue (B = 255; R/G = 0)) - Render the Plasma fractal - Rotate the palette a few colors in either direction. Create another spread which eases the transition between the White and Blue "boundry". What you are trying to accomplish here is a completely "smooth" transition of color within the palette - Now cycle the palette You can experiment with rendering the Plasma fractal with the palette set to a spread between 2 colors (as indicated above), and then alter the palette once the Plasma fractal is rendered As with all the other Fractal types, experiment to find the best results for you! @endnode @node explanation "Explanation of the Fractal user interface" Fractal consists of three separate (but related) windows: @{"Controls" link controlswindow} - the primary user interface @{"Coordinates" link coordinateswindow} - display and input of X/Y coordinate values @{"Fractal" link fractalwindow} - where all the drawing occurs this is also called the "Draw" window @endnode @node controlswindow "Controls Window" The Controls window contains the following items: @{"Type" beep 0} - Key equivalent is "t" or "T" Cycle gadget indicating the type of fractal to be drawn: Mandelbrot Julia (Julia Set) Magnetism LambdaExpZ (Lambda Exponent Z) LambdaCosZ (Lambda Cosize Z) Biomorph Plasma Change the type by left-clicking the gadget, or pressing the key equivalent ("t" or "T") @{"Depth" beep 0} - Slider gadget indicating the "iterative depth" limits of the drawing area The higher the Depth, the greater the detail The higher the Depth, the longer a Draw takes See "Special Plasma notes" regarding how the Depth control is interpreted for this fractal type @{"RealC" beep 0} - Slider gadget indicating the "Real number" constant value used Julia, Magnetism, and Biomorph fractal computation Slider value is the Real Number constant multiplied by 100. For example, if the slider value is 134, the actual constant value used will be 1.34 Disabled for all other fractal types @{"ImagC" beep 0} - Slider gadget indicating the "Imaginary number" constant value used Julia, Magnetism, and Biomorph fractal computation Slider value is the Imaginary Number constant multiplied by 100. For example, if the slider value is 134, the actual constant value used will be 1.34 Disabled for all other fractal types @{"Lmbda" beep 0} - Slider gadget indicating the "Lambda" constant value used in LambdaExpZ and LambdaCosZ fractal computation Slider value is the Lambda constant multiplied by 100. For example, if the slider value is 134, the actual constant value used will be 1.34 Disabled for all other fractal types @{"Draw" beep 0} - Key equivalent is "d" or "D" Renders a fractal of the selected "Type" the Fractal (Draw) window, based upon the parameters in the Controls window @{"Pause" beep 0} - Key equivalent is "p" or "P" Pauses a "Draw" action To resume a paused "Draw", press the "Draw" button To terminate the current "Draw", press the "Stop" button @{"Stop" beep 0} - Key equivalent is "s" or "S" Stops an in-progress Draw action @{"Center" beep 0} - Key equivalent is "c" or "C" Allows you to establish a new center point for the Fractal display (i.e,. X/Y coords). A.K.A. Panning Disabled for the Plasma fractal type ---------------------------------------------- To use: 1) Select the Center button 2) Move the pointer to the Fractal draw window 3) Click and release the left mouse button This will cause a cross-hair to appear in the window 4) Move the cross-hair with the pointer, until it is over the spot on the image which you wish to be the new "center" 5) Click the left mouse button to "lock" the new center At this point, the X/Y coordinates will be updated and an automatic draw is initiated ---------------------------------------------- @{"X-Y" beep 0} - Key equivalent is "x" or "X" Opens/Closes the Coordinates window Disabled for the Plasma fractal type @{"Zoom In" beep 0} - Key equivalent is "i" or "I" Allows you to zoom into (i.e., enlarge) a rectangular area on the Draw window. Disabled for the Plasma fractal type ---------------------------------------------- To use: 1) Select the Zoom In button 2) Move the pointer to the Fractal draw window 3) Select (left mouse button) the upper left corner of the area you want to zoom into 4) Release the mouse button 5) Moving the pointer will cause a dashed-line rectangle to appear This rectangle is the area which will be "zoomed into" 6) When the rectangle is the desired size, click the left mouse button to "lock" the zoom At this point, the X/Y coordinates will be updated and an automatic draw is initiated ---------------------------------------------- @{"Save" beep 0} - Key equivalent is "v" or "V" Allows you to save an IFF/ILBM file containing the current Fractal (Draw) window image You are prompted to enter the location and name of the "save" file Select "Cancel" to cancel the save @{"Zoom Out" beep 0} - Key equivalent is "o" or "O" Allows you to zoom out of the currently defined X/Y coordinate As with Zoom In, the X/Y coordinates are updated, and an automatic draw is initiated The degree of "zoom out" can be controlled via the cycle gadget (1->10) immediately to the right of the "Zoom Out" button Disabled for the Plasma fractal Type @{"I" beep 0} - Causes the Controls/Coordinates window(s) to iconify Once iconified, selecting the "Open" button will restore the window(s) to their previous size/position/state Note that the iconfied window can be moved! @{"?" beep 0} - Opens an info requestor @endnode @node coordinateswindow "Coordinates Window" The Coordinates window contains the following items: @{"Xmin" beep 0} @{"Xmax" beep 0} @{"Ymin" beep 0} @{"Ymax" beep 0} - Four string gadgets showing the numerical limits of the drawing area The X axis is horizontal (left->right = min->max) The Y axis is vertical (bottom->top = min->max) Can be used for direct entry of X/Y limits ----------------------------------------- Also updated when using the Zoom In, Zoom Out, and Center functions ----------------------------------------- -------------------------------------------- After manually updating the X/Y limits, select the Draw button to see the new image -------------------------------------------- The program will not allow a min >= max, and a max <= min. It also limits the ability to go way outside the X/Y values of the startup fractal image @endnode @node fractalwindow "Fractal (Draw) Window" The Fractal (Draw) window is: - Where all fractal images are drawn - Re-sizable only when a "Draw" is not in progress - Erased when re-sized @endnode @node icontooltypes "Icon Tooltypes" Fractal recognizes the following Tooltypes within it's icon: MAIN_X= - The X-coordinate at which the Controls window will initially open MAIN_Y= - The Y-coordinate at which the Controls window will initially open DRAW_X= - The X-coordinate at which the Fractal (Draw) window will initially open DRAW_Y= - The Y-coordinate at which the Fractal (Draw) window will initially open @endnode @node credits "Credits" The GUI for Fractal was developed using Jan van den Baards' wonderful GadToolsBox Thanks to the KreuzerSoft support team Thanks to the Nations Capital Amiga Users Group (NCAUG) Thanks to Commodore for the Amiga; a truly amazing machine! Major thanks to Dave at Buried Treasure in Rockville, MD ********************************************************************* ** Please patronize your local Amiga dealers (like Dave), everyone ** ** ** ** Most of these people are NOT making tons of $$$$, so if you'd ** ** like to keep a local presence in your area, GO BUY SOMETHING! ** ********************************************************************* @endnode @node contactingtheauthor "Contacting the Author" I'd really like to hear any feedback you have regarding Fractal I can be reached via any of the following methods: - tkreuzer@delphi.com on the Internet - T.KREUZER on GEnie - via regular mail at: 6711A N. Washington Blvd. Arlington, VA 22213 @endnode @node legalstuff "Legal Stuff" Fractal Version 1.3 Copyright 1994 by Timothy B. Kreuzer. All rights reserved. You are hereby granted the freedom to distribute Fractal IF, AND ONLY IF the following rules are followed: - This doc file MUST be kept with the executable(s), and must include the above copyright notice. - You may NOT charge ANY fee for this program, other than the basic cost of distribution media and/or BBS access. Of course if you want to pursue selling this, feel free drop me a line. Fred Fish is hereby granted permission to include this program (and it's accompanying documentation) in his excellent collection of Amiga software. @endnode @node kreuzersoftproducts "KreuzerSoft Products" The following KreuzerSoft projects are (hopefully) available on a BBS near you: PST V1.0a - Public Screen utility for 3.0/AGA PaletteTool V1.4 - Public screen palette program for 3.0/AGA LyapunovSpace V1.2 - Lyapunov fractal program for 3.0/AGA Terrain V1.1 - 3-D fractal terrain program for 3.0/AGA FindColor V1.0a - "Color-by-Name" selector for 3.0/AGA Worm V1.1 - Port of SUN-Unix graphic toy for all Amigas DLA - Diffusion Limited Aggregation simulation for all Amigas Jimi - 8-color Jimi Hendrix image for your Workbench. MemTool - Memory monitor tool for the Workbench Reminder V1.1 - Timed reminder tool for the Workbench All for the incredibly low, low price of FREE! @endnode