home *** CD-ROM | disk | FTP | other *** search
- ________________________________________________________________________
- / \
- | !Fractal v1.12: General Fractal Plotter |
- | January 1997 |
- | by Mike Curnow |
- \________________________________________________________________________/
-
-
- Introduction
- ============
- Fractal is designed to be a universal fractal generator. Fractal has two
- purposes. Firstly to provide you with a comprehensive application to examine
- fractal functions and images. Secondly it is designed as a platform for
- fractal programmers to add their own routines. This enables these routines
- to get immediate Wimp access and support of the 3d functions etc.
-
- Help - Fractal fully supports the !Help application, including help on
- menus. Try !Help before looking here - it will save you a lot of time!
-
- A brief guide to usage.
- ----------------------
- Double click on the !Fractal filer icon to load, and then click one the
- Mandelbrot tool icon to display the initial fractal (a Mandelbrot). Select a
- 256 colour mode from the Palette application or Mode Selector to see the
- image correctly. Alternatively you can click with Adjust over the iconbar
- icon to open a full screen window (though still in desktop mode). Clicking
- with Select re-opens the main window if closed.
-
- Many of the main functions of Fractal can be performed from the Tools pane
- on the left. The main menu provides access to all of these functions and
- more.
-
- To Zoom in click with Select over the 1st tool icon, or use Adjust to zoom
- out. A zoom box will appear - use the left mouse button to shrink the zoom
- box, and the right button to enlarge it. Press the middle button to start
- the redraw operation. The machine will be locked until the redraw is
- complete or until you press Adjust, at which point multi-tasking mode will
- be entered. Note that some functions never end until you select Image->Stop.
- Also note that when in full screen mode the desktop is still active - its
- just that the other windows are hidden. To close the full screen window
- select Display->Hide.
-
- The screen can be saved by using the Image->Save option. Saved drawings may
- be reloaded by simply dragging the saved sprite onto the Fractal icon,
- allowing zooming to re-commence.
-
- A good way to see the power of Fractal is via the supplied scripts. Click
- on Misc->Scripts which will open a Filer window. Drag one of the text files
- onto Fractal and a fractal will be drawn.
-
- System Requirements
- ===================
- Fractal 1.xx requires RiscOS 3.1 or higher. Use Fractal 0.30 on previous
- releases of RiscOS. Fractal will run in a 1Mb machine, depending on the
- options chosen, but Fractal can use as much memory as you have to generate
- huge images.
-
- Fractal requires a considerable amount of storage : 350k for code, sprite
- image size (depends on mode), 1 or 2 banks of screen memory, so be prepared.
- Some functions are disabled if there is insufficient memory. To save space,
- some functions load their data on first selection so be prepared for further
- disk activity. Many functions also dynamically acquire memory, so keep some
- free. If you get memory problems try Image Mode=13 and turn off Previous
- Image Save in the Options panel.
-
- Fractal takes full advantage of the ARM3 processor, FPA processor and
- graphics enhancer boards when fitted, including the VIDC2 in the RiscPC. An
- ARM3 will give 4-5 times speed improvement. The FPA chip will improve
- floating point calculations by 10-20 times. If you do not have an FPA chip
- don't worry - Fractal uses integer and fixed point routines where possible,
- the major drawback being lack of accuracy.
-
- If you have an FPA chip Fractal automatically uses floating point routines
- when and if these are faster than its own integer based ones. An FPA chip is
- recommended. The following timings illustrate the performance available
- compared to a fast PC.
-
- Acorn: Fractal 106 running on an A410 25Mhz ARM3+25MHZ FPA, CC colour card.
- PC: Fractint running on a 486-33DX (inbuilt fpa) with local bus video.
- Function: Mandelbrot, x=-25, y=-1.5, w=4, h=4, iter=150 (Fractint's defaults).
- Image size: 800x600 256 colours.
-
- Image Size Maths Acorn PC
- 800x600 Integer 6.20 6.37 seconds
- 800x600 Float 7.31 8.02
- 1024x768 Integer 8.68 9.62
- 1024x768 Float 10.45 12.25
-
- An A5000 (25Mhz) will be about 10-15% faster due to faster memory, whilst
- the A5000 33Mhz will be 30-40% faster. So don't sell your Acorn for a PC,
- just buy an FPA, a bargain at £100.
-
- Full Operation Information
- ==========================
-
- The fractal plot is displayed either in a full screen window, which may be
- hidden at any time by selecting Display->Desktop from the menu, or in a
- standard re-sizeable window. When not in a 256 colour mode the colours are
- matched as best as possible, but this may lead to loss of image detail.
-
- When an image is re-drawn Fractal attempts to enter the image mode to allow
- the image generation to be seen. To avoid out of memory problems it may be
- best to pre-select this mode from the Palette task or from the
- 'Options->Full screen mode' when in full screen mode. If the image size is
- different from the screen size, then no attempt is made to show the re-draw
- as it proceeds. To avoid annoying screen flicker on mode changes, it is best
- to enter full screen mode with the display mode same as the image mode (this
- is the default).
-
- Automatic Last Display Save
- ---------------------------
- Most operations which modify the current image will save it in memory. The
- prior image may be recalled by selecting Display->Previous from the menu.
- Thus you can zoom in to inspect an area, then quickly back out to the
- previous display. To maintain further images use the load and save
- facilities.
-
- Colours And Palettes
- --------------------
- Fractal works with the VIDC2 of the RiscPC and A7000 machines and graphics
- enhancer boards by allowing all 256 colours of the palette to be programmed,
- rather than the fixed 256 colours usually provided. Full colour support is
- automatically enabled on RiscOS 3.5 machines or if CC's Colour Card is
- installed. For other boards Select Misc->Options->256 to turn on full colour
- support. Do not attempt to use the 256 colour palette options if your machine
- does not have a full 256 colour palette. Do take Fractal along to your dealer
- to see how wonderful a fully selectable palette can be, especially in high
- resolution screen modes such as 800x600 or higher.
-
- If you do not have full 256 colours you can still view Fractal's output in
- full 256 colour by saving the image as a GIF file and then using ChangeFSI
- or Translator to get a dithered sprite.
-
- The palette in 256 colour modes cannot be changed by the !Palette utility
- and are in a strange sequence. However !Fractal allows the 256 colours to be
- arranged in any sequence or for a subset of the colours to be used. This is
- useful to highlight detail or produce more realistic displays in 3d mapping
- eg. the landscape palettes. Palettes may be editted via the supplied
- !EditPal application and a selection of ready made palettes is in the
- directory displayed from the Palette->Files menu option. Palettes can be
- loaded by dragging onto a !Fractal window.
-
- Without a full 256 colour graphics chip you will not see the full range of
- colours, but you can still alter the sequence and range of colours used. To
- get a better view save the image as a GIF file and then use ChangeFSI or
- Translator to get a dithered sprite.
-
- Within !Fractal all colours are numbered 0-255 corresponding to the physical
- colour numbers. Use !EditPal to see the actual colour for each value, since
- this will be dependent on the palette. In the RiscOS default palette the
- sequence 0 to 255 results in a strange order of colours. To overcome this
- use the RGB palette where the colours cycle through Tint,Red,Green,Blue in
- ascending order (values 0-3 each). If you are familiar with the GCOL and
- TINT values of BBC BASIC then try the LOGICAL palette. This will give the
- colour mapping Red,Green,Blue,Tint in ascending sequence.
-
- Alternatively try a single colour palette such as Grey256.
-
- ----------------------------------------------
-
- Setting Your Own Defaults
- =========================
- Besides the settings available from the Options panel, there are two ways
- you can set up your own default values for !Fractal :
-
- a) Load !Fractal and make your settings (eg. image mode, fractal function),
- and then save the image+data with the name Default within the !Fractal
- directory. The next time you start the program, the Default sprite will be
- loaded and values set from there.
-
- b) Within the !Fractal directory is a file called Initial. This is a fractal
- script which is executed at start up time. You can place any valid script
- commands in here to set your defaults. See the !Scripts help file for full
- details.
-
- Note that the Initial script is executed after loading the Default sprite.
-
- ----------------------------------------------
-
- 3d Plotting
- ===========
- There are three kinds of 3d plotting in !Fractal - 3d images, 3d mapping and
- 3d transformations.
-
- 3d Images
- ---------
- This refers to functions which create 3d shapes - Lorenz, Pickover, Rossler
- - these just all happen to be strange attractors at the moment. You will
- find that you need to change the rotation and elevation to get an
- appreciation of these shapes. To help in this process, you can change the
- viewpoint whilst the plot is underway. Simply press the cursor keys to
- change the viewpoint in increments of 5° in each direction. The plot stops
- and the most recent part of the image is redrawn to indicate the new
- viewpoint. Press the Spacebar to restart the plot.
-
- The number of points redrawn is set by the 3d-buffer size - increase it for
- more points, but this will slow down the redraw. Try 500 points with an
- ARM-2, 1500 with an ARM-3. If possible !Fractal will redraw the image in
- shadow memory to avoid flicker. For the Lorenz and Rossler functions
- increase the Step Rate variable to around 2.0e-2 to show enough of the
- image.
-
- Note that when altering the viewpoint, the image is rotated about the origin
- of the image, not the screen. This is most notable when changing the
- elevation on the Lorenz attractor.
-
- 3d Mapping
- ----------
- With pixel plotting functions the pixel colour can be used as the height
- (Julia, Lyapunov, Mandelbrot, Newton, Popcorn-Julia, Unity). The results are
- similar to creating an image and then transforming it with 3d_View. The
- advantage of the direct plot is that a full screen image is created, and you
- can zoom into the image. The disadvantage is that it disables the pixel
- guessing mechanism, resulting in a noticeable loss of speed.
-
- When zooming the zoom box represents the approximate image area at zero
- height - you will find you will need to zoom in lower, anticipating where the
- base of the image is. Do not alter the viewpoint and zoom at the same time -
- do these seperately, otherwise results will not be as expected. Note that
- zooming does not change the height.
-
- The height mapping parameters control how the pixel colour is mapped onto a
- height. To increase the overall height increase the height scalar. Use the
- min & max height parameters to clip the image to get a 'slice' - this is
- most useful for smoothing spiky peaks. It can be useful to set the max
- height value to the same as the iteration value of the function. Note that
- heights above 255 are wrapped around to zero.
-
- The centre of rotation and elevation is the centre of the image. Decreasing
- the elevation will therefore bring more of the foreground and distance into
- view. Note that the integer plot functions (such as Mandelbrots) can't fully
- cope with vey low viewpoints, and may produce no image at all. Try zooming
- in to overcome this, or switch to full precision maths.
-
- 3d Transformations
- ------------------
- These are functions which take an image and perform a 3d transformation
- (3d_Plane, 3d_View, Render, Riemann). All but the Riemann transform the
- image by using the pixel colour as the height, using the same mapping
- process as described above and controlled by the same height mapping
- parameters. The Riemann function projects the image onto a Riemann sphere.
- For full details on Riemann see the help file !Functions.
-
- ----------------------------------------------------------------------------
-
- Adding Your Own Routines
- ------------------------
- !Fractal allows your own fractal routines written in ARM Assembler or C code
- to be added. For full details please send a SAE + disc to me at the address
- below, stating whether you want to program in C and/or Assembler.
-
- Programming
- -----------
- !Fractal is written in C and ARM assembler for maximum speed. Contact me if
- you would like to contribute your own Fractal function to !Fractal. You will
- get full credits and become part of the best Archimedes fractal program ever
- (well I am hoping so).
-
- Bugs And Errors
- ---------------
- I am aware that this release still contains bugs. Sorry, but if you
- treat it kindly things should be ok. Division by zero or overflow error
- messages indicate a problem with the input data for the function. If you get
- error messages such as Address Exception then press CANCEL on the error box.
- A screen showing more diagnostics will appear. To help me fix the problem
- please note the details along with release of !Fractal, info on your machine
- and how the problem manifests itself. See if the problem is recreatable. If
- you let me know, then I'll endeavour to fix the problem.
-
- History
- -------
- 0.10 03/07/91 : Initial versions sent out to attract developer interest.
- 0.11 08/07/91 : Cleaned up palette handling, added Mbrot<->Julia routines.
- Added palette stepping and timing of non x/y functions.
- 0.12 24/07/91 : Cycle with only 1 screen bank for modes 21,24,28 etc.
- Created Fraclib for assembler functions and documented
- programming interfaces.
- 0.13 04/08/91 : Added IFS 2d plus extra internal !Fractal functions.
- 0.14 10/08/91 : Added full desktop operation.
- 0.15 05/09/91 : Lots of additions and experiments. Added tools, fast x/y
- plotting, Render and Riemann functions. Extended Mandelbrot
- and Julia functions, plus better Assembler support.
- 0.16 12/09/91 : Cleaned up some bugs; colouring options for Mandelbrot;
- provided data variables for 3d plotting control.
- 0.17 29/09/91 : Added Options control; Henon and Newton functions; inverse
- Mandelbrots
- 0.18 27/10/91 : Added Popcorn, Lorenz and L-systems. Major enhancements to
- 3d control and Riemann now works properly. Periodicity
- checking added to Mandelbrots. Unknown sprite import. Also
- improved error trapping.
- 0.19 15/11/91 : Added fast floating point support - Newton & Riemann changed
- to use it. Added 3d tools icons, 2 more palettes, 2 more
- Mandelbrots. Added Midpoint function. General tidy up ready
- for release.
- 0.20 25/11/91 : Sent to Archimedes World for public release. Included speeded
- up version of Popcorn using FPE_Lib.
- 0.21 14/12/91 : Added Pickover, Rossler & Unity functions. Lorenz to 3d.
- Added 3d image generation and realtime 3d control. Sent to
- Acorn User.
- 0.22 26/02/92 : Added palette editing and interactive help. 3d style push buttons.
- Sent to Micro User.
- 0.23 08/03/92 : Added Quaternion.
- 0.24 24/03/92 : Added Fault and Bifurcate. Colour cycling now works on all
- palettes. Sent to Micro User.
- 0.25 14/04/92 : More Bifurcations and Linear faults. X/Y Position window.
- Script programming facility.
- 0.26 27/04/92 : Extended script programming. CellFill function. L-System
- improvements. Numerous bugs fixed as well (about time too!).
- 0.27 04/05/92 : A5000 & A540 support. Zoomable display. More bug fixing.
- 0.28 10/05/92 : Display colours correctly in 16 colour modes. New method of
- setting defaults.
- 0.29 24/05/92 : Better 3d height scaling. Direct Riemann plot. Plasma func.
- 0.30 27/11/92 : L-System enhancements, RiscOS 3.1 fixes.
- 1.00 09/03/93 : Support for full 256 colour palettes. RiscOS 3.1 exploitation.
- 1.01 27/04/93 : Added Lyapunov function, random palettes, more RiscOS 3.1.
- 1.02 /05/93 : New version of flex memory management (faster).
- 1.03 20/07/93 : Improved Point plotting options. GIF File support. More
- RiscOS 3.1 support. Standardised colour number handling.
- 1.04 01/08/93 : Quazi Mandelbrot & Julia. Periodicity checking on floating
- point Mandys & Julias.
- 1.05 08/09/93 : FPA enhancements: Bifurcate, IFS, Lorenz, Newton, Pickover
- & Rossler default to FPA use when available. Much faster Mandy
- FP routines and automatic switchover when FPA installed.
- Image Details panel describing hardware and techniques.
- Speed improvement on 32 bit floating point emulator.
- 1.06 21/09/93 : Add all 256 modes to Image->Modes menu. Finer zoom control &
- turn off cross hairs at high zoom. Mandelbrot DEM & CPM modes.
- Mandelbrot 96-bit precision. Extension to Script commands.
- Bug fixes to GIF load. Handle reload of older versions of
- Fractal sprites.
- 1.07 25/01/94 : Support 256 colour modes of CC Gold. !NewLook conformance.
- Switchable numeric display precision.
- 1.08 03/03/94 : Neil Carson's Raycast and Stereogram functions.
- 1.09 25/04/94 : Sierpinski & updates to Raycast from Neil Carson.
- 1.10 04/09/95 : Fixed various GIF bugs and other small changes.
- 1.11 13/10/96 : Extra Netwon functions, Manowar and Spider from Joyce Haslam.
- 1.12 08/01/97 : Fixed bad bug in IFS & L-Systems.
-
- To obtain the latest version send a blank formatted disk + SAE to Mike
- Curnow. Contributions (money or fractal programs) to help run the Archimedes
- Fractal Group are welcome - you'll get sent information on fractals in
- return.
-
- The Future
- ----------
- To come (amongst other essential features) :
-
- Loads more fractal functions (volunteers please).
- More 256 colour palette exploitation.
- Many more image manipulation facilities.
- Better script handling (full expression handler).
-
- Suggestions are always welcome as are algorithms.
-
- Contributors (people who have supplied code or algorithms)
- ============
- Many thanks to Joyce Haslam for the Mandelbrot and Julia equations, Popcorn
- and one of the Henon's.
-
- Jean Van Mourik for the Fill algorithm. Little did you know it could be so
- beautiful!
-
- Neil Carson for the Raycast and Stereogram functions - 100% his own work.
-
- Credits
- =======
- This program would not exist without the benefit of previous work by many
- people. In particular Fractal Report and Fractint have been a major source
- of inspiration. More detailed sources are given in the !Functions help file.
-
- Thanks to A.Fedonczuk for the original 32 bit integer routines.
- Stuart Payne of Acorn for the original Render algorithm.
- Michael Attenborough for the fast Lyapunov plotter idea (BAU Feb 92).
-
- To Fractal Report for many of the ideas including the X/Y Guessing
- algorithm, Riemann plot, IFS affine maths. For a free copy of Fractal Report
- write to RTL Ltd, West Towan House, Porthtowan, Truro, Cornwall, TR4 8AX.
-
- To the authors of Fractint for initial inspiration and many bits that don't
- get credit otherwise. Stone soup forever!
-
- John Greening for many of the L-system codes and inspiration.
-
- Copywright Notice
- =================
- The copywright of this material belongs to Mike Curnow and Neil Carson. This
- software is not "Public Domain". However permission is granted for
- non-commercial use of this software and associated material as long as NO
- CHARGES ARE LEVIED except to cover costs. Copies of this software may be
- freely distributed amongst individuals on a no-charge basis. Public Domain
- and commercial organisations are kindly asked to contact the author prior to
- circulation and use of this program.
-
- Mike Curnow,
- Stoneleigh
- Swan Lane
- Great Bourton
- BANBURY
- OX17 1QR
- email: mike.curnow@dial.pipex.com
-
- SAE with all correspondance please.
-
- <<<< MAY CHAOS BE WITH YOU! >>>>
-