home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ARM Club 3
/
TheARMClub_PDCD3.iso
/
hensa
/
graphics
/
fractal_1
/
!Fractal
/
Help
/
Overview
< prev
next >
Wrap
Text File
|
1997-01-08
|
20KB
|
405 lines
________________________________________________________________________
/ \
| !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! >>>>