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

  1.   ________________________________________________________________________
  2.  /                                                                        \
  3. |                !Fractal v1.12: General Fractal Plotter                   |
  4. |                            January 1997                                  |
  5. |                           by Mike Curnow                                 |
  6.  \________________________________________________________________________/ 
  7.  
  8.  
  9. Introduction
  10. ============
  11. Fractal is designed to be a universal fractal generator. Fractal has two
  12. purposes. Firstly to provide you with a comprehensive application to examine
  13. fractal functions and images. Secondly it is designed as a platform for
  14. fractal programmers to add their own routines. This enables these routines
  15. to get immediate Wimp access and support of the 3d functions etc.
  16.  
  17. Help - Fractal fully supports the !Help application, including help on
  18. menus. Try !Help before looking here - it will save you a lot of time!
  19.  
  20. A brief guide to usage.
  21. ----------------------
  22. Double click on the !Fractal filer icon to load, and then click one the
  23. Mandelbrot tool icon to display the initial fractal (a Mandelbrot). Select a
  24. 256 colour mode from the Palette application or Mode Selector to see the
  25. image correctly. Alternatively you can click with Adjust over the iconbar
  26. icon to open a full screen window (though still in desktop mode). Clicking
  27. with Select re-opens the main window if closed.
  28.  
  29. Many of the main functions of Fractal can be performed from the Tools pane
  30. on the left. The main menu provides access to all of these functions and
  31. more.
  32.  
  33. To Zoom in click with Select over the 1st tool icon, or use Adjust to zoom
  34. out. A zoom box will appear - use the left mouse button to shrink the zoom
  35. box, and the right button to enlarge it. Press the middle button to start
  36. the redraw operation. The machine will be locked until the redraw is
  37. complete or until you press Adjust, at which point multi-tasking mode will
  38. be entered. Note that some functions never end until you select Image->Stop.
  39. Also note that when in full screen mode the desktop is still active - its
  40. just that the other windows are hidden. To close the full screen window
  41. select Display->Hide.
  42.  
  43. The screen can be saved by using the Image->Save option. Saved drawings may
  44. be reloaded by simply dragging the saved sprite onto the Fractal icon,
  45. allowing zooming to re-commence.
  46.  
  47. A good way to see the power of Fractal is via the supplied scripts. Click
  48. on Misc->Scripts which will open a Filer window. Drag one of the text files
  49. onto Fractal and a fractal will be drawn.
  50.  
  51. System Requirements
  52. ===================
  53. Fractal 1.xx requires RiscOS 3.1 or higher. Use Fractal 0.30 on previous
  54. releases of RiscOS. Fractal will run in a 1Mb machine, depending on the
  55. options chosen, but Fractal can use as much memory as you have to generate
  56. huge images.
  57.  
  58. Fractal requires a considerable amount of storage : 350k for code, sprite
  59. image size (depends on mode), 1 or 2 banks of screen memory, so be prepared.
  60. Some functions are disabled if there is insufficient memory. To save space,
  61. some functions load their data on first selection so be prepared for further
  62. disk activity. Many functions also dynamically acquire memory, so keep some
  63. free. If you get memory problems try Image Mode=13 and turn off Previous
  64. Image Save in the Options panel.
  65.  
  66. Fractal takes full advantage of the ARM3 processor, FPA processor and
  67. graphics enhancer boards when fitted, including the VIDC2 in the RiscPC. An
  68. ARM3 will give 4-5 times speed improvement. The FPA chip will improve
  69. floating point calculations by 10-20 times. If you do not have an FPA chip
  70. don't worry - Fractal uses integer and fixed point routines where possible,
  71. the major drawback being lack of accuracy.
  72.  
  73. If you have an FPA chip Fractal automatically uses floating point routines
  74. when and if these are faster than its own integer based ones. An FPA chip is
  75. recommended. The following timings illustrate the performance available
  76. compared to a fast PC.
  77.  
  78. Acorn: Fractal 106 running on an A410 25Mhz ARM3+25MHZ FPA, CC colour card.
  79. PC: Fractint running on a 486-33DX (inbuilt fpa) with local bus video.
  80. Function: Mandelbrot, x=-25, y=-1.5, w=4, h=4, iter=150 (Fractint's defaults).
  81. Image size: 800x600 256 colours.
  82.  
  83. Image Size   Maths       Acorn         PC
  84. 800x600      Integer      6.20        6.37 seconds
  85. 800x600      Float        7.31        8.02
  86. 1024x768     Integer      8.68        9.62
  87. 1024x768     Float       10.45        12.25
  88.  
  89. An A5000 (25Mhz) will be about 10-15% faster due to faster memory, whilst
  90. the A5000 33Mhz will be 30-40% faster. So don't sell your Acorn for a PC,
  91. just buy an FPA, a bargain at £100.
  92.  
  93. Full Operation Information
  94. ==========================
  95.  
  96. The fractal plot is displayed either in a full screen window, which may be
  97. hidden at any time by selecting Display->Desktop from the menu, or in a
  98. standard re-sizeable window. When not in a 256 colour mode the colours are
  99. matched as best as possible, but this may lead to loss of image detail.
  100.  
  101. When an image is re-drawn Fractal attempts to enter the image mode to allow
  102. the image generation to be seen. To avoid out of memory problems it may be
  103. best to pre-select this mode from the Palette task or from the
  104. 'Options->Full screen mode' when in full screen mode. If the image size is
  105. different from the screen size, then no attempt is made to show the re-draw
  106. as it proceeds. To avoid annoying screen flicker on mode changes, it is best
  107. to enter full screen mode with the display mode same as the image mode (this
  108. is the default). 
  109.  
  110. Automatic Last Display Save
  111. ---------------------------
  112. Most operations which modify the current image will save it in memory. The
  113. prior image may be recalled by selecting Display->Previous from the menu.
  114. Thus you can zoom in to inspect an area, then quickly back out to the
  115. previous display. To maintain further images use the load and save
  116. facilities.
  117.  
  118. Colours And Palettes
  119. --------------------
  120. Fractal works with the VIDC2 of the RiscPC and A7000 machines and graphics
  121. enhancer boards by allowing all 256 colours of the palette to be programmed,
  122. rather than the fixed 256 colours usually provided. Full colour support is
  123. automatically enabled on RiscOS 3.5 machines or if CC's Colour Card is
  124. installed. For other boards Select Misc->Options->256 to turn on full colour
  125. support. Do not attempt to use the 256 colour palette options if your machine
  126. does not have a full 256 colour palette. Do take Fractal along to your dealer
  127. to see how wonderful a fully selectable palette can be, especially in high
  128. resolution screen modes such as 800x600 or higher.
  129.  
  130. If you do not have full 256 colours you can still view Fractal's output in
  131. full 256 colour by saving the image as a GIF file and then using ChangeFSI
  132. or Translator to get a dithered sprite.
  133.  
  134. The palette in 256 colour modes cannot be changed by the !Palette utility
  135. and are in a strange sequence. However !Fractal allows the 256 colours to be
  136. arranged in any sequence or for a subset of the colours to be used. This is
  137. useful to highlight detail or produce more realistic displays in 3d mapping
  138. eg. the landscape palettes. Palettes may be editted via the supplied
  139. !EditPal application and a selection of ready made palettes is in the
  140. directory displayed from the Palette->Files menu option. Palettes can be
  141. loaded by dragging onto a !Fractal window.
  142.  
  143. Without a full 256 colour graphics chip you will not see the full range of
  144. colours, but you can still alter the sequence and range of colours used. To
  145. get a better view save the image as a GIF file and then use ChangeFSI or
  146. Translator to get a dithered sprite.
  147.  
  148. Within !Fractal all colours are numbered 0-255 corresponding to the physical
  149. colour numbers. Use !EditPal to see the actual colour for each value, since
  150. this will be dependent on the palette. In the RiscOS default palette the
  151. sequence 0 to 255 results in a strange order of colours. To overcome this
  152. use the RGB palette where the colours cycle through Tint,Red,Green,Blue in
  153. ascending order (values 0-3 each). If you are familiar with the GCOL and
  154. TINT values of BBC BASIC then try the LOGICAL palette. This will give the
  155. colour mapping Red,Green,Blue,Tint in ascending sequence.
  156.  
  157. Alternatively try a single colour palette such as Grey256.
  158.  
  159.       ----------------------------------------------
  160.  
  161. Setting Your Own Defaults
  162. =========================
  163. Besides the settings available from the Options panel, there are two ways
  164. you can set up your own default values for !Fractal :
  165.  
  166. a) Load !Fractal and make your settings (eg. image mode, fractal function),
  167. and then save the image+data with the name Default within the !Fractal
  168. directory. The next time you start the program, the Default sprite will be
  169. loaded and values set from there.
  170.  
  171. b) Within the !Fractal directory is a file called Initial. This is a fractal
  172. script which is executed at start up time. You can place any valid script
  173. commands in here to set your defaults. See the !Scripts help file for full
  174. details.
  175.  
  176. Note that the Initial script is executed after loading the Default sprite.
  177.  
  178.       ----------------------------------------------
  179.  
  180. 3d Plotting
  181. ===========
  182. There are three kinds of 3d plotting in !Fractal - 3d images, 3d mapping and
  183. 3d transformations. 
  184.  
  185. 3d Images
  186. ---------
  187. This refers to functions which create 3d shapes - Lorenz, Pickover, Rossler
  188. - these just all happen to be strange attractors at the moment. You will
  189. find that you need to change the rotation and elevation to get an
  190. appreciation of these shapes. To help in this process, you can change the
  191. viewpoint whilst the plot is underway. Simply press the cursor keys to
  192. change the viewpoint in increments of 5° in each direction. The plot stops
  193. and the most recent part of the image is redrawn to indicate the new
  194. viewpoint. Press the Spacebar to restart the plot.
  195.  
  196. The number of points redrawn is set by the 3d-buffer size - increase it for
  197. more points, but this will slow down the redraw. Try 500 points with an
  198. ARM-2, 1500 with an ARM-3. If possible !Fractal will redraw the image in
  199. shadow memory to avoid flicker. For the Lorenz and Rossler functions
  200. increase the Step Rate variable to around 2.0e-2 to show enough of the
  201. image.
  202.  
  203. Note that when altering the viewpoint, the image is rotated about the origin
  204. of the image, not the screen. This is most notable when changing the
  205. elevation on the Lorenz attractor.
  206.  
  207. 3d Mapping
  208. ----------
  209. With pixel plotting functions the pixel colour can be used as the height
  210. (Julia, Lyapunov, Mandelbrot, Newton, Popcorn-Julia, Unity). The results are
  211. similar to creating an image and then transforming it with 3d_View. The
  212. advantage of the direct plot is that a full screen image is created, and you
  213. can zoom into the image. The disadvantage is that it disables the pixel
  214. guessing mechanism, resulting in a noticeable loss of speed.
  215.  
  216. When zooming the zoom box represents the approximate image area at zero
  217. height - you will find you will need to zoom in lower, anticipating where the
  218. base of the image is. Do not alter the viewpoint and zoom at the same time -
  219. do these seperately, otherwise results will not be as expected. Note that
  220. zooming does not change the height.
  221.  
  222. The height mapping parameters control how the pixel colour is mapped onto a
  223. height. To increase the overall height increase the height scalar. Use the
  224. min & max height parameters to clip the image to get a 'slice' - this is
  225. most useful for smoothing spiky peaks. It can be useful to set the max
  226. height value to the same as the iteration value of the function. Note that
  227. heights above 255 are wrapped around to zero.
  228.  
  229. The centre of rotation and elevation is the centre of the image. Decreasing
  230. the elevation will therefore bring more of the foreground and distance into
  231. view. Note that the integer plot functions (such as Mandelbrots) can't fully
  232. cope with vey low viewpoints, and may produce no image at all. Try zooming
  233. in to overcome this, or switch to full precision maths.
  234.  
  235. 3d Transformations
  236. ------------------
  237. These are functions which take an image and perform a 3d transformation
  238. (3d_Plane, 3d_View, Render, Riemann). All but the Riemann transform the
  239. image by using the pixel colour as the height, using the same mapping
  240. process as described above and controlled by the same height mapping
  241. parameters. The Riemann function projects the image onto a Riemann sphere.
  242. For full details on Riemann see the help file !Functions.
  243.  
  244. ----------------------------------------------------------------------------
  245.  
  246. Adding Your Own Routines
  247. ------------------------
  248. !Fractal allows your own fractal routines written in ARM Assembler or C code
  249. to be added. For full details please send a SAE + disc to me at the address
  250. below, stating whether you want to program in C and/or Assembler.
  251.  
  252. Programming
  253. -----------
  254. !Fractal is written in C and ARM assembler for maximum speed. Contact me if
  255. you would like to contribute your own Fractal function to !Fractal. You will
  256. get full credits and become part of the best Archimedes fractal program ever
  257. (well I am hoping so).
  258.  
  259. Bugs And Errors
  260. ---------------
  261. I am aware that this release still contains bugs. Sorry, but if you
  262. treat it kindly things should be ok. Division by zero or overflow error
  263. messages indicate a problem with the input data for the function. If you get
  264. error messages such as Address Exception then press CANCEL on the error box.
  265. A screen showing more diagnostics will appear. To help me fix the problem
  266. please note the details along with release of !Fractal, info on your machine
  267. and how the problem manifests itself. See if the problem is recreatable. If
  268. you let me know, then I'll endeavour to fix the problem.
  269.  
  270. History
  271. -------
  272. 0.10 03/07/91 : Initial versions sent out to attract developer interest.
  273. 0.11 08/07/91 : Cleaned up palette handling, added Mbrot<->Julia routines.
  274.                 Added palette stepping and timing of non x/y functions.
  275. 0.12 24/07/91 : Cycle with only 1 screen bank for modes 21,24,28 etc.
  276.                 Created Fraclib for assembler functions and documented
  277.                 programming interfaces.
  278. 0.13 04/08/91 : Added IFS 2d plus extra internal !Fractal functions.
  279. 0.14 10/08/91 : Added full desktop operation.
  280. 0.15 05/09/91 : Lots of additions and experiments. Added tools, fast x/y
  281.                 plotting, Render and Riemann functions. Extended Mandelbrot
  282.                 and Julia functions, plus better Assembler support.
  283. 0.16 12/09/91 : Cleaned up some bugs; colouring options for Mandelbrot;
  284.                 provided data variables for 3d plotting control.
  285. 0.17 29/09/91 : Added Options control; Henon and Newton functions; inverse
  286.                 Mandelbrots
  287. 0.18 27/10/91 : Added Popcorn, Lorenz and L-systems. Major enhancements to
  288.                 3d control and Riemann now works properly. Periodicity
  289.                 checking added to Mandelbrots. Unknown sprite import. Also
  290.                 improved error trapping.
  291. 0.19 15/11/91 : Added fast floating point support - Newton & Riemann changed
  292.                 to use it. Added 3d tools icons, 2 more palettes, 2 more
  293.                 Mandelbrots. Added Midpoint function. General tidy up ready
  294.                 for release.
  295. 0.20 25/11/91 : Sent to Archimedes World for public release. Included speeded
  296.                 up version of Popcorn using FPE_Lib.
  297. 0.21 14/12/91 : Added Pickover, Rossler & Unity functions. Lorenz to 3d.
  298.                 Added 3d image generation and realtime 3d control. Sent to
  299.                 Acorn User.
  300. 0.22 26/02/92 : Added palette editing and interactive help. 3d style push buttons.
  301.                 Sent to Micro User.
  302. 0.23 08/03/92 : Added Quaternion.
  303. 0.24 24/03/92 : Added Fault and Bifurcate. Colour cycling now works on all
  304.                 palettes. Sent to Micro User.
  305. 0.25 14/04/92 : More Bifurcations and Linear faults. X/Y Position window.
  306.                 Script programming facility.
  307. 0.26 27/04/92 : Extended script programming. CellFill function. L-System
  308.                 improvements. Numerous bugs fixed as well (about time too!).
  309. 0.27 04/05/92 : A5000 & A540 support. Zoomable display. More bug fixing.
  310. 0.28 10/05/92 : Display colours correctly in 16 colour modes. New method of
  311.                 setting defaults.
  312. 0.29 24/05/92 : Better 3d height scaling. Direct Riemann plot. Plasma func.
  313. 0.30 27/11/92 : L-System enhancements, RiscOS 3.1 fixes.
  314. 1.00 09/03/93 : Support for full 256 colour palettes. RiscOS 3.1 exploitation.
  315. 1.01 27/04/93 : Added Lyapunov function, random palettes, more RiscOS 3.1.
  316. 1.02   /05/93 : New version of flex memory management (faster).
  317. 1.03 20/07/93 : Improved Point plotting options. GIF File support. More
  318.                 RiscOS 3.1 support. Standardised colour number handling.
  319. 1.04 01/08/93 : Quazi Mandelbrot & Julia. Periodicity checking on floating
  320.                 point Mandys & Julias.
  321. 1.05 08/09/93 : FPA enhancements: Bifurcate, IFS, Lorenz, Newton, Pickover
  322.                 & Rossler default to FPA use when available. Much faster Mandy
  323.                 FP routines and automatic switchover when FPA installed.
  324.                 Image Details panel describing hardware and techniques.
  325.                 Speed improvement on 32 bit floating point emulator.
  326. 1.06 21/09/93 : Add all 256 modes to Image->Modes menu. Finer zoom control &
  327.                 turn off cross hairs at high zoom. Mandelbrot DEM & CPM modes.
  328.                 Mandelbrot 96-bit precision. Extension to Script commands.
  329.                 Bug fixes to GIF load. Handle reload of older versions of
  330.                 Fractal sprites.
  331. 1.07 25/01/94 : Support 256 colour modes of CC Gold. !NewLook conformance.
  332.                 Switchable numeric display precision.
  333. 1.08 03/03/94 : Neil Carson's Raycast and Stereogram functions.
  334. 1.09 25/04/94 : Sierpinski & updates to Raycast from Neil Carson.
  335. 1.10 04/09/95 : Fixed various GIF bugs and other small changes.
  336. 1.11 13/10/96 : Extra Netwon functions, Manowar and Spider from Joyce Haslam.
  337. 1.12 08/01/97 : Fixed bad bug in IFS & L-Systems.
  338.  
  339. To obtain the latest version send a blank formatted disk + SAE to Mike
  340. Curnow. Contributions (money or fractal programs) to help run the Archimedes
  341. Fractal Group are welcome - you'll get sent information on fractals in
  342. return.
  343.  
  344. The Future
  345. ----------
  346. To come (amongst other essential features) :
  347.  
  348. Loads more fractal functions (volunteers please).
  349. More 256 colour palette exploitation.
  350. Many more image manipulation facilities.
  351. Better script handling (full expression handler).
  352.  
  353. Suggestions are always welcome as are algorithms.
  354.  
  355. Contributors (people who have supplied code or algorithms)
  356. ============
  357. Many thanks to Joyce Haslam for the Mandelbrot and Julia equations, Popcorn
  358. and one of the Henon's.
  359.  
  360. Jean Van Mourik for the Fill algorithm. Little did you know it could be so
  361. beautiful!
  362.  
  363. Neil Carson for the Raycast and Stereogram functions - 100% his own work.
  364.  
  365. Credits
  366. =======
  367. This program would not exist without the benefit of previous work by many
  368. people. In particular Fractal Report and Fractint have been a major source
  369. of inspiration. More detailed sources are given in the !Functions help file.
  370.  
  371. Thanks to A.Fedonczuk for the original 32 bit integer routines.
  372. Stuart Payne of Acorn for the original Render algorithm.
  373. Michael Attenborough for the fast Lyapunov plotter idea (BAU Feb 92).
  374.  
  375. To Fractal Report for many of the ideas including the X/Y Guessing
  376. algorithm, Riemann plot, IFS affine maths. For a free copy of Fractal Report
  377. write to RTL Ltd, West Towan House, Porthtowan, Truro, Cornwall, TR4 8AX.
  378.  
  379. To the authors of Fractint for initial inspiration and many bits that don't
  380. get credit otherwise. Stone soup forever!
  381.  
  382. John Greening for many of the L-system codes and inspiration.
  383.  
  384. Copywright Notice
  385. =================
  386. The copywright of this material belongs to Mike Curnow and Neil Carson. This
  387. software is not "Public Domain". However permission is granted for
  388. non-commercial use of this software and associated material as long as NO
  389. CHARGES ARE LEVIED except to cover costs. Copies of this software may be
  390. freely distributed amongst individuals on a no-charge basis. Public Domain
  391. and commercial organisations are kindly asked to contact the author prior to
  392. circulation and use of this program.
  393.  
  394. Mike Curnow,
  395. Stoneleigh
  396. Swan Lane
  397. Great Bourton
  398. BANBURY
  399. OX17 1QR
  400. email: mike.curnow@dial.pipex.com
  401.  
  402. SAE with all correspondance please.
  403.                        
  404.                    <<<< MAY CHAOS BE WITH YOU! >>>>
  405.