[comp.sys.amiga] Initial release of MandelVroom

orandy@amdahl.UUCP (05/20/87)

  I've been working on a Mandelbrot program for the Amiga for a long time,
and I've finally stopped development long enough to post a first revision.
This is my first posting to the net, I hope you like it.

  The whole package consists of eight shar files.  If you are reading
this, you already got the first shar file.  If you don't want the source,
all you need to keep is parts 1 and 2.  If you want the source, you must
collect all eight parts to this posting.

  Here is a summary of the contents of each part of the posting:

       part    summary
         1       README MandelVroom.doc
         2       MandelVroom.uue
         3       MandelVroom source code
         4       MandelVroom source code
         5       MandelVroom source code
         6       Charlie Heath's file name requester source and diffs
         7       Some Amiga Developers disk IFF stuff
         8       More Amiga Developers disk IFF stuff

  Please note that due to the brain-damaged nature of system five,
MandelVroom.doc and MandelVroom.uue have been renamed MandVroom.doc
and MandVroom.uue.  This is so the #$%@! file names are fourteen
characters long or less.  Please rename them when you get them unshared.

  If you want to compile MandelVroom, you will need start with a blank
floppy. You will then want to perform the following steps:

         1. Format a floppy in df1:
         2. change directory into df1:
         3. make a directory called 'src'
         4. change directory into 'src'
         5. make a directory called 'MandelVroom'
         6. make a directory called 'GetFile'
         7. make a directory called 'IFF'
         8. change directory into 'IFF'
         9. make a directory called 'iff'

Note: you are not required to use df1:, I just picked it as an example.

  Once you have prepared an empty file system, you need to copy the
shar files into specific directories.  The table below shows you
which shar files go into which directories.

       part     directory

         1      df1:
         2      df1:
         3      df1:src/ManelVroom
         4      df1:src/ManelVroom
         5      df1:src/ManelVroom
         6      df1:src/GetFile
         7      df1:src/IFF
         8      df1:src/IFF/iff

  You must then unshar each of the files, and read the README's in each
directory.  There are Makefiles for each of the source directories.
You should make the IFF stuff first.  Then you will need to make
Charlie Heath's file name requester (remember to apply the diffs file)
next.  You need to make MandelVroom last, because MandelVroom's
Makefile links all the objects together.

  The code will only work when compiled under Manx3.40a with patches.
MandelVroom uses the new 1.2 function NewModifyProp.  Manx 3.40a
without patches, produces an executable that will crash the system.
There is a fair amount of assembly code in here, so it would be difficult
to port it to Lattice.

  Please observe the copyright notice in all the sources posted.  I am
using Charlie Heath's file name requester off the Fish Disks. I have
reposted it with diffs, so as to comply with his posting restrictions.
Please see his code in the GetFile directory for his copyright notice.

  The stuff in the IFF directory is from the Amiga Developer's IFF disk.
These files contain copyright notices and restrictions.  These files
came from Fish Disk 64.

  All my code is Freely Redistributable in both source and executable
form, as long as the copyright notices remain intact, and is not for
for non-commercial use.  That means you can give it away, but don't sell
it.

  You are welcome to hack this code to death,  but I'd like to be kept
informed of any new ideas or hacks you put into it, and I'd like to know
if you make major changes and repost it.

  I am:

  Kevin L. Clague

  408 Tortolla Way
  San Jose, CA 95133

  home phone: 408-258-9891
  work phone: 408-737-5481

  I am permanently borrowing an account with access to usenet. Please
see my signature for my net address.

  To those who try to recreate this beast, good luck....  To those
who use it, happy Mandelbrot hunting!!!





# This is a shell archive.  Remove anything before this line, then
# unpack it by saving it in a file and typing "sh file".  (Files
# unpacked will be owned by you and have default permissions.)
#
# This archive contains:
# README MandVroom.doc

echo x - README
cat > "README" << '//E*O*F README//'



  I have been working on this Mandlebrot for some months and have
finally decided to give it away in the public domain.  I hope you
like it.

  It can only be compiled with Manx Aztec C, because some of the
program is in Manx 68000 assembler format.  The Mandelbrot picture
generators are in assembly for speed.

  The program uses contour map making techniques that allow you
direct control over coloration of your Mandelbrot pictures.  Once
you've generated a picture, you can recolor again in seconds.
MandelVroom has a number of preset pictures that are examples
of the kind of pretty pictures you can make.

  MandelVroom works best with more than 512K of ram, but I've tried
to make some provisions for those of you without extra ram.

  The file named MandeVroom.doc contains a description of MandelVroom
and how to use it.  I recommend reading it.

  For those of you who want or need to rebuild MandelVroom, good luck.
MandelVroom's code is located in three directories.  The MandleVroom
directory contains most of MandelVroom's code.

  The GetFile directory contains Charlie Heath's file name regiester
from Fish Disk 41.  It also contains some files with diff's in them.
Charlie's file name requester doesn't work to well in custom screens
without them.

  You will need to combine Charlies code with the diff's to produce the
code I use.  You will then need to perform a make in the GetFile
directory.

  The IFF directory needs to contain a bunch of sources from the
Amiga Developers IFF disk (Fish Disk 64).  See the 'readme' in the
IFF directory for information on the files required.

  Sorry you have to run all over to get the stuff to rebuild this code,
but I don't want to redistribute the IFF sources.

  Good luck with the program.  I hope you enjoy it.


  Kevin L. Clague
  408 Tortolla Way
  San Jose, CA 95133

  home 408-258-9891
  work 408-737-5481







//E*O*F README//

echo x - MandVroom.doc
cat > "MandVroom.doc" << '//E*O*F MandVroom.doc//'

  PURPOSE

  This document introduces you to MandelVroom, outlines it's features,
and tells you how to use it.

  READINGS

  For a good explanation of Mandlebrot calculations, I recommend you
look up the Computer Recreations column in the August 1985 edition
of Scientific American magazine.

  You may want to read a book written by Dr. Benoit Mandelbrot, called
"The Fractal Geometry of Nature", published by W. H. Freeman and Company.
Dr. Heinz-Otto Peitgen and Dr. Peter Richter have written a very nice
book called "The Beauty of Fractals".  It is published by Springer-Verlag.
It has a some very nice pictures and is a good navigational guide. I
recomend it.

  INTRODUCTION

  This program lets you navigate around the complex plane generating
Mandelbrot pictures.  Picture data is saved in RAM allowing you to
quickly recolor pictures using a powerful coloration mechanism.

  Once you've generated and recolored a picture, you can save it on
disk in one of two formats: ILBM and MAND.  ILBM files are in IFF format.
MAND files contain everything needed to recreate the picture.  It can
take a long time to calculate Mandelbrot pictures.  MAND files allow
you to save this precious data on disk.

  MandleVroom also has these features:
    - Assembly language 32 bit fixed point Mandlebrot picture generator
    - Assembly language Fast Floating Point Mandlebrot picture generator
    - Picture presets
    - Color palette
    - Contour palette
    - Mouse and graphics oriented user interface
    - High resolution, interlace and halfbrite graphics modes supported
    - Configurable number of bit planes
    - Source in public domain

  TERMINOLOGY

  You need to know the following concepts to use this program:

    - Generators and Generation
    - Navigation and Zooming
    - Aspect Ratios
    - Contours and Altitudes
    - Pens and Colors

  GENERATORS AND GENERATION

  The generators perform Mandelbrot calculations over regions of the
complex plane.  The generators produce a two dimesional array of
iteration counts.  MandelVroom treats these iteration counts as
altitudes.  You can use this program to navigate around the complex
plane choosing regions to generate pictures over.

 Using preset locations as starting points, you can generate pictures.
Once generated, you select a region within the picture that you want as
the next picture.  When you start the generator, you 'zoom into' the
new location in the complex plane.

  ASPECT RATIOS

  An aspect ratio is the ratio between the width and height of a rectangle.
A square is a rectangle with a one to one aspect ratio.  The pixels on
your screen have an aspect ratio that varies depending on graphics mode
you are using.  MandelVroom takes the aspect ratios of the pixels into
account when calculating pictures.

  Some Mandelbrot programs allow you to strech either the X or the Y
axis.  In this case, a square picture window would not represent a square
region in the complex plane.  MandelVroom will not allow you to do this.

  CONTOURS AND ALTITUDES

  Map makers often use color to indicate altitude in when making contour
maps.  Contour maps usually have a 'key' indicating what colors relate
to which altitude.  MandelVroom treats iteration count as altitude.
It has a programmable key allowing you to assign pen numbers to ranges
of altitudes.

  MandlVroom's programmable key is called the Contour Palette.  The Contour
Palette contains thirty two contours.  You can use the thirty two contours'
heights and colors to control the distribution of colors in your picture.

  PENS AND COLORS

  MandelVroom supports low resolution, high resolution, non-interlace,
interlace, and half brite graphics modes.  In these graphics modes,
the Amiga uses a hardware color indirection method for graphics
display.  The Amiga hardware contains thirty two pens that can be filled
with one of 4096 colors.  The following chart show how many pens
the Amiga hardware supports for each graphics node.

                 Graphics Mode      Number of Pens
                 ---------------- -----------------
                  High Resolution         16
                  Low Resolution          32
                  Half Brite              64

Please note that interlace does not affect the number of pens available to
you.

  MandelVroom has a Color Palette that allows you to copy, blend and
exchange colors in the Amiga's color registers.

  STARTING MANDELBROT

  This version of MandelVroom can only be run from the CLI.
To start the program, type:

                   MandelVroom

  When the program starts, it opens a custom screen and a Picture
window.  It then generates a picture of the main Mandelbrot set.
It will take a minute or two it to calculate this picture.

  THE MAIN MANDELBROT SET

  The black region in the middle of the picture is the Mandelbrot set.
The bright area surrounding the Mandelbrot set is the place to explore.
The darker regions outside the bright areas are of little interest.
They are dark so they don't distract you from the interesting areas.

  NAVIGATION

  The Mandelbrot set is inside a circle of radius two, ceneterd about
the origin of the complex plane.  The rectangular Picture window
represents a rectangular region on the complex plane.  The pictures
that MandelVroom generates depend on the regions you pick in the
complex plane.

  MandelVroom generates pictures in the Picture window.  You can
choose regions within the current picture to be the boundaries for
the next picture.  When you generate, you will produce a big picture
of the new region.  This is nicknamed 'zooming'.

  ZOOMING IN

  There are three steps to zooming in.

     1. Select a region for the next picture
     2. Resize the Picture window if you like
     3. Generate a new picture

  You select a region of the current picture using the Zoom Box.  The
Zoom Box is a resizable and movable rectangle you use to box in a region
for the next picture.

  THE ZOOM BOX

  You place, move, resize and close the Zoom Box using the mouse.  The
following steps will open the Zoom Box in the Picture window:

      1. Pull down the Zoom Box item's Open sub-item
      2. Place the mouse cursor in your Mandelbrot picture.
      3. Depress and hold the left mouse button
      4. Drag the mouse down and to the right
      5. Release the left mouse button.

  The Zoom Box is a stick figure of an Intuition window.  The Zoom Box
has a drag bar, resize gadget, and a close gadget.  The drag bar and
close gadgets are at the top of the Zoom Box.  The resize gadget is in
the lower right hand corner of the Zoom Box.
The Zoom Box looks like this:

            +--- Close Gadget    +--- Drag Bar
            |                    |
            v                    v
         +-----+----------------------------------+
         |     |                                  |
         |     |                                  |
         +-----+----------------------------------+
         |                                        |
         |                                        |
         |                                        |
         |                                        |
         |                                        |
         |                                        |
         |                                        |
         |                                    +---+
         |                                    |   |<---- Resize Gadget
         |                                    |   |
         +------------------------------------+---+


  This is how you move the Zoom Box:

      1. Place the mouse cursor in the Zoom Box's drag bar
      2. Depress and hold the left mouse button
      3. Drag the Zoom Box around with the mouse
      4. Release the left mouse button

  This is how you resize the Zoom Box:

      1. Place the mouse cursor in the Zoom Box's resize gadget.
      2. Depress and hold the left mouse button
      3. Resize the Zoom Box using the mouse
      4. Release the left mouse button

  You can close the Zoom Box one of two ways:

      1. Press the Zoom Box's close gadget
      2. Pull down the Close subitem of the Zoom Box item

  If you place a Zoom Box, and then decide you don't want to zoom,
you can close the Zoom Box.

  RESIZING THE PICTURE WINDOW

  Once you've placed and sized your Zoom Box, you will want to resize
the Picture window to have the same aspect ratio as your Zoom Box.  If
you don't, when you generate you may get too little or too much of
the area on the right side of the Zoom Box.

  GENERATING NEW PICTURES

  If you pull down the Generate item of the Project menu,  MandelVroom
will generate a new picture for you.  Using the zoom box and the
generator, you can repeatedly zoom in until you find things you
think are interesting.

  STOPING THE GENERATORS

  Pictures take from minutes to hours to generate.  You can stop the
generator by pulling down the Stop item of the Project menu.  Once stopped,
the generators can not be restarted, except at the begining of the
picture. Once the generator is stopped, you can proceed as though the
whole picture was calculated.

  CHANGING MAGNIFICATIONS

  MandelVroom is like a microscope with variable magnification.  Every
time you zoom in and generate a new picture,  you increase the
magnification of your microscope.  You can also change the
magnification by changing the height of the picture window.
Making the picture window taller increases the magnification.  Making
the picture window shorter decreases the magnification.

  If you make the picture window wider, while not changing it's height,
you will not change magnification factor.  You will get a picture
covers a wider piece of the complex plane.

  If you want to make a large version of a small picture, all you need
to do is resize the window and generate.  You must take care to make
sure the aspect ratio of the original window and the new window are the
same.  If you make the picture too narrow, some of the things you want
in the picture may be cut off.  If it is too wide, you may have extra
things in your picture.

  The same is true for the relative aspect ratios of the zoom box and
the picture window.

  GOOD NAVIGATING

  This program has nice facilities for zooming into the Mandelbrot set.
It is severly lacking in methods for zooming out.  It's saving grace is
that you can save interesting pictures to disk.  You can also reload
these pictures and resume zooming.  You can use use disk files to
record your journey in search of the ultimate Mandelbrot picture.
File access is discussed in the LOADING AND SAVING section.

  The best way to be a good navigator is to practice.  Start by generating
a picture of the main Mandelbrot set.  Zoom in on the perimiter of
the set.  Try not to get too much Mandelbrot in the picture, it takes
a long time to calculate.  If you like the picture, you can save it
on disk, and zoom somewhere into the picture.  Keep doing this and
you are bound to find something nice.

  Good navigating is an art.  Good subject placement and framing can make
a world of difference in a picture.  Sometimes you want lot's of detailed
real estate in the picture (like a picture of Yosemite Valley.)  Other
times you want to isolate and capture a small object (like a picture
of a small flower.)

  WHAT'S NEXT

  Once you have a picture generated, you probably want to recolor it.
The next section explains how to pick and choose colors for your picture.

  PICTURE RECOLORING

  You can use the Color Palette and the Contour Palette to recolor a
MandelVroom picture.  You can use the Color Palette to affect the
colors in you pens.  You can also use the Contour palette to change
the distribution of pens and colors in your picture.  The next
section explains the use of the Color Palette.  The Contour palette is
discussed in the THE CONTOUR PALETTE section.

  THE COLOR PALETTE

  You can open the Color palette by pulling down the Color item of the
Edit menu.  The color palette looks like this:

        +---+-------------------------+---+---+
        | . | Color                   |   |   |
        +---+-------------------------+---+---+
        |                                     |
        | ++ ++ ++ ++  R  G  B  +---+         |
        | ++ ++ ++ ++           |   | Copy    | <-- copy a pen's color
        |             ++        +---+         |
        | ++ ++ ++ ++                         |
        | ++ ++ ++ ++    ++     +---+         |
        |                       |   | Spread  | <-- Spread from pen to pen
        | ++ ++ ++ ++           +---+         |
        | ++ ++ ++ ++       ++                |
        |                       +---+         |
        | ++ ++ ++ ++           |   | Exchg   | <-- Exchange two pens
        | ++ ++ ++ ++           +---+         |
        |                                     |
        | ++ ++ ++ ++                         |
        | ++ ++ ++ ++                         |
        |                                     |
        | ++ ++ ++ ++                         |
        | ++ ++ ++ ++                         |
        |                                     |
        | ++ ++ ++ ++                         |
        | ++ ++ ++ ++                         |
        |                                     |
        | ++ ++ ++ ++                         |
        | ++ ++ ++ ++                         |
        |                                     |
        +-------------------------------------+
          ^        ^   ^  ^  ^
          |        |   |  |  |
          |        |   +--+--+-- RED/GREEN/BLUE potentiomenters
          |        |
          +--------+- Pens


  ADJUSTING PEN COLORS

  You can use the Red, Green, and Blue potentiometer gadgets to adjust a
pen's color components.  The following steps show you how to change a
pen's color:

       1. Click the mouse on the pen you want to modify.
       2. Adjust it's color using the R/G/B potentiometer gadgets.

  COPYING PEN COLORS

  You can copy one pen's color into another pen by performing the following
steps:

       1. Click the mouse on the pen you want to copy
       2. Click the Copy gadget
       3. Click the pen you want to change

  SPREADING PEN COLORS

  You can create a range of colors between pens (e.g. a range of pens from
dark green to light green) using the Spread gadget.  You use the spread
gadget in the following way:

       1. Click the mouse on a pen at one end of the range
       2. Click the Spread gadget
       3. Click the mouse on the pen at the other end of the range

  EXCHANGING PEN COLORS

  These steps will exchange two pen colors:

       1. Click the mouse on one of the pens you want to exhange
       2. Click the mouse on the Excg gadget
       3. Click the mouse on the other pen

  NOTES ON CHANGING PEN COLORS

  Be very careful when changing the top four pens in the left most
column of pens.  These pens are used by the system to render windows and
screens.  If you make these pens the same color, you may have problems
seeing MandelVroom's controls.

  The Amiga uses pens 17 through 19 when drawing the mouse cursor.  If
change these pens, the cursor may be hard to work with.

  The Zoom Box on the picture window is rendered using a drawing mode
called complement.  When the system is drawing a line in complement
mode, it negates the pen number in each pixel in the line.  If you have
five bit planes, you have thirty two pens.  The complement of pen 0 is
pen 31.

 It you draw a line in complement mode, you can erase it by drawing the
same line again in complement mode.

  If complementary pens have similar colors in them, then object drawn
in complement mode is unnoticable.  If you have problems finding your
Zoom Box, check out your pen colors.

  THE CONTOUR PALETTE

  The Contour Palette is a powerful control mechanism for coloring your
Mandelbrot pictures.  It has thirty two contours.  Each contour has a pen
and a height.  MandelVroom expects to find the contours' heights decreasing
as you traverse the list of contours from 0 to 31.  Given this, a contour
actualy represents a range of heights.

  Here is an example description of the list of four contours:

         Contour  Contour  Contour       Contour
         Number   Height     Pen          Range
         -------  -------  -------      ---------
            0      1023       0         1023-1023
            1       500      10         1022-500
            2       300       1          499-300
            3       100       2          299-100

  OPENING THE CONTOUR PALETTE

  You can open the Contour palette by pulling down the Contour item of
the Edit menu.  The Contour Palette looks like this:

                +---+-------------------------------------------+--+--+
status line ->  |   | C: 0   H: 1023  P: 0                      |  |  |
                +---+-------------------------------------------+--+--+
                |                                                     |
set pen or  --> | .. .. .. .. .. .. .. .. .. .. Set      +---+        |
height gadgets  | .. .. .. .. .. .. .. .. .. ..       .. |   | ReColor|
                |                                        +---+        |
increment   --> | .. .. .. .. .. .. .. .. .. .. +                     |
height          | .. .. .. .. .. .. .. .. .. ..                       |
                |                                        +---+        |
            +-> | ..                                     |   | Smooth |
            |   | ..                                     +---+        |
            |   |                                                     |
            |   |    ..                                               |
            |   |    ..                                               |
height      |   |                               Alt.                  |
potentiomenters |       ..                                            |
            |   |       ..                                            |
            |   |                                                     |
            |   |          .. .. .. .. .. .. ..                       |
            +-> |          .. .. .. .. .. .. ..                       |
                |                                                     |
                |                                                     |
decrement   --> | .. .. .. .. .. .. .. .. .. .. -                     |
height          | .. .. .. .. .. .. .. .. .. ..                       |
                |                                                     |
                +-----------------------------------------------------+
                  ^                             ^      ^    ^
                  |                             |      |    |
                  +---------- Contours ---------+      |    + Commands
                  0  1  2   .........     30 31        |
                                                       +-- Ceiling


  As the generator calculates pictures, it saves the data in RAM.  Once
the picture is generated, you can change the Contour Palette and recolor
the picture.  When you push the 'ReColor' gadget, MandelVroom traverses
the Mandelbrot data, converting altitude to pen, and plotting pens in the
picture window.  This mechanism allows you to recolor the picture quickly
and repeatedly until you are happy with the way it looks.

  Each contour has four gadgets: a set gadget, an increment height gadget,
a height potentiometer, and a decrement height gadget.
These are used to modify a given contour's height and/or pen.

  SETTING A CONTOUR'S PEN

  You can use any pen for any contour.  To do this, you must have both the
Contour and Color Palette windows open.  To set a contour's pen, click it's
Set gadget and the click a pen in the Color Palette.  Notice there is no
change in the Picture window?  The change will not take place until you
hit the ReColor gadget of the Contour window.

  SETTING A CONTOUR'S HEIGHT

  You can set a given contour's height, by adjusting it's potentiometer
gadget.  You can use the increment and decrement gadgets to fine tune
contours' heights.

  You can also set a given contour's height by clicking it's Set gadget
and clicking a point on the Picture window.  The program will look up
the height associated with the pixel you click and use that as the
contour's new height.  This is the most useful way of setting a contour's
height.

  Height changes do not affect the picture until you press the ReColor
gadget of the Contour window.

  NOTES ON CONTOURS

  MandelVroom expects contours' heights to decrease as you traverse the
list of contours from 0 to 31.  Any contour that does not meet this
expectation is ignored.

  SMOOTHING CONTOURS

  You can evenly distribute a set of contours' heights by using the
Smooth gadget.  This is comparable to the Color palette's Spread
gadget.

  Example:

  pull the far right contour's potentiometer gadget down to the bottom
  (e.g. set that contour's height to 0.)  Pull the far left contour's
  potentiometer gadget all the way to the top.  Click the smooth gadget.
  Click the right-most contour's set gadget.  All the contours in the
  middle change.  They are evenly distributed.

  Soothing of contours can be done between any two contours.  The
contour settings created by the above example do not lend themselves to
very good pictures.  You are in charge of deciding what heights and colors
are appropriate for each picture.

  A RECOLORING METHOD

  The contour method is very powerful for recoloring Mandelbrot
pictures.  When starting in to color a new picture, I usually set contour
two to a black pen with zero height.  I then vary the height of contour
one until I get the amount of color want.  I then restore contour one's
original height and pen.  I then set contour thirty one's height to zero.
Using the Smooth command, I evenly distribute all the contours between
contour thirty one and contour one.  I then recolor the picture using
the Recolor gadget.

  Looking at the colors in the contours and the colors on the picture,
I can find the lowest point in the picture.  I set contour thirty one's
height using the picture window.  Again I smooth the points between
contour one and contour thirty one, and recolor the picture.

  This gives me the height of the highest non-Mandelbrot point in
the picture in contour one.  I also have lowest point height in
contour thirty one.  This gives me a feel for the distribution of
point's heights in the picture.

  THE CEILING GADGET

  The potentiometer gadgets serve a couple of purposes. They allow you to
set a given contour's height.  They also allow you to see (roughly) what
the contour's height's are.

  In most Mandelbrot pictures, very few points
fall in the top half of the possible iteration count range.  Typically
by the sixth contour, the remaining potentiometer's are at the same
pixel height in the window (although they have different heights).

  The Ceiling gadget allows you to get a better look at the shorter
contours.  Move it around and watch what it does. The contour's
potentiometers change, but the contour's height's don't. Comprende?

  I have very hard time explaining this one.  Moving the ceiling gadget
does not affect the picture.  It only affects the display of the
contour's potentiometer gadgets.

  I guess the best thing is to just set the ceiling to varous values
until you see what it does.

  THE STATUS LINE

  There is a status line in the Drag bar of the Contour window. It shows
you information about the current contour.  When you select a contour's
select gadget, the program will display the contour number, the contour's
height range and pen in the status line.  You can use this to
find out what numbers are in which contours.

  SAVING AND LOADING

  You can save and load raw Mandlebrot data files on floppies.  The
program saves all the data necessary to generate and zoom new pictures.
This can be very usefull for saving your place while you are navigating.
If you zoom in, and don't like it, you can pull where you were off disk.
You can load MAND files using the Project menu's Load item.  The Save
item, of the Project menu, has a MAND sub-item that is used to save
MAND files on disk.

  SAVING ILBMS

  You can save pictures in ILBM format.  This allows you to take pictures
from this program and use them in slide shows or in DPaint.  You can
save ILBM files by using the ILBM sub-item of the Project menu's Save
item.

  CONFIGURING AMIGA GRAPHICS

  The program allows you to use many of the Amiga's graphics modes.  It
supports: low and high resolutions, non-interlace and interlace, and
halfbrite mode (yes, I have a half bright denice.)  The program also
allows you to chose the number of bit planes to use.  The number of bit
planes affects the number of pens you can have for coloring Mandelbrot.

  You can change the graphics modes of the program by pulling down the
ViewModes item of the Edit menu.  The ViewModes item has three sub-items:
HIRES, INTERLACE, and HALFBRITE.  These are used to configure ViewModes.
Once you have ViewModes configured, pull down the NewScreen item of the
Project menu.  The program will close the old screen and open a new one
with your new specifications.

 Beware: HALFBRITE and HIRES are mutually exclusive.  The program will
not allow you to configure ViewModes in ways that the Amiga hardware
can't handle.

  You can change the number of bit planes using the list of depths
available in the Depth item of the Edit menu.  It allows you to use
from 1 to 6 bit planes.  Some combinations of Depths and ViewModes
are illegal.  HIRES screens can only have four bit planes.  HALFBRITE
screens require six bit planes.  The program modifies the number of
bit planes to a legal value where required.

  GENERATORS

  The Mandelbrot set has infinite detail.  The Amiga has finite
numerical precision. This precision limits how far down you can zoom
into the Mandelbrot set.  This program has two generators: a 32 bit
fixed point generator, and a Motorola Fast Floating Point generator.
They both perform the same Mandelbrot calculations, they just use
different data formats.  Both generators are finely tuned, had crafted
assembly.  Good performance was the goal.

  The 32 bit fixed point generator is considerably faster than the
floating point generator.  The fixed point generator can not zoom in
as far as the floating point generator.   I use the fixed point generator
until the lack of precision becomes unbearable.  I then switch to the
floating point generator.  You can switch between fixed point and floating
point generators in the Generator item of the Edit menu.

  The floating point generator allows you to configure the number of
iterations done in the Mandelbrot calculation.  This is handy for
quicker pictures at lower magnifications.  The farther you zoom in,
the higher the iteration count required (generally.)  The fixed point
generator always uses 1023 as the maximum iteration count.

  PRESET LOCATIONS

  This program has a number of preset pictures that I think are very
pretty.  The first preset generates a picture of the main Mandelbrot
set.  The presets are intended as examples of good navigation and
coloration.  I hope you like them.  To generate a preset picture, pull
down a preset item and release. The program prepares itself and
generates the picture.

  All the presets produce small pictures.  If you want to generate
large versions of the presets, you can stop the generator, resize
the picture window, an pull down the Generate item of the Project menu.

  SAVING TIME

  Mandelbrot calculations take a long time.  One way to avoid long
calculation times is to generate small pictures without many points in
the Mandelbrot set.  Use small Picture windows while zooming in on
something, then make the Picture window large when you've found
something you really like.

  Another interesting way to save time is to not watch the picture
generate.  If you are using 5 or more bit planes in low resolution
graphics mode, the video hardware steals memory bus cycles from the
68000.  Other graphic modes and bit plane combinations also degrade
68000 performance.  When generating somethime,  watch the speed of the
generator.  Pull the screen down three fourths of the way down the
monitor.  See the generator speed up?  If you are in a real hurry,
you can pull all the screens down.  In this case, the video hardware
hardly uses any memory bus cycles, the only problem is you can't
see anything.

  MEMORY HOGGING

  This program can consume a lot of memory.  It allocates a word of memory
for each pixel in a picture.  A 640 by 400 window requires 512K bytes
of memory.  If you have a 512K Amiga, you will not be able to generate
full screen interlace or high resolution pictures.  You can, however,
generate smaller pictures in these graphic modes.

  ADVANCED TOPICS

  Mandlebrot calculations are CPU and memory intensive. You can do some
things to reduce memory consumption (LORES, NONINTERLACE, 1 bit plane).
It is hard to reduce the CPU usage.  This program can multitask, but
it will interfere with other programs running at the same priority.
You can use the ChangeTaskPri function available under Workbench 1.2
to set Mandelbrot's priority lower than other programs you might want
to run.

  You might also notice that not all Mandelbrot pixels take the same
amount of time to calculate.  I have a Mandelbrot detection algorithm
in both the fast floating point and fixed point algorithms.

  It turns out that the points inside the Mandelbrot set cycle.  My
generators use a trace mechanism to detect these rings.  If a ring is
detected, then the pixel is Mandelbrot.  It saves lots of time when
calculating the main Mandelbrot set.  It saves less as you zoom in.

  SOMEDAY

  I have tons of new ideas and feature that I would like to add.
  Some are:

    - Fixed point generator sensitive to Max Index
    - Double precision fixed point generator
    - IEEE floating point generator
    - Generator runs as seperate task
    - change task priority built into program
    - movable magnifying glass generator
    - other fractal generators (julia curves....)
    - key in generator's maximum iteration counts from the keyboard

    - Good zoom out controls
    - record a history of points you've been to.
    - key in complex plane locations from keyboard
    - a 'You are here --->' display feature
    - proportional zoom box and picture window controls

    - three dimensional rendering

    - Many more contours.
    - assign a range of colors to a range of contours
    - copy contour pen patters into other contours
    - Auto-contouring.
    - a histogram of altitudes in picture

    - Volume-Hue-Saturation controls in color palette
    - Color cycling
    - borderless picture window/screen
    - overscan graphics

    - define IFF file format for Raw Mandelbrot information
    - less ram usage
    - a 68881 (oops! I guess I'll need new hardware)

  APOLOGIES

  Sorry this document is so big,  but I hope helps you understand how
to use the program. I also apologize for any inacuracies in this document.
Sorry for any bugs this program has.  I know they can be annoying.

  Finally I apologize for all the Amiga CPU time this program will
consume.

  AUTHOR

  Kevin L. Clague
  408 Tortola Way
  San Jose, Ca 95133

  Home 408-258-9891
  Work 408-737-5481


//E*O*F MandVroom.doc//

echo Possible errors detected by \'wc\' [hopefully none]:
temp=/tmp/shar$$
trap "rm -f $temp; exit" 0 1 2 3 15
cat > $temp <<\!!!
     59    316   1888 README
    741   4825  31439 MandVroom.doc
    800   5141  33327 total
!!!
wc  README MandVroom.doc | sed 's=[^ ]*/==' | diff -b $temp -
exit 0


-- 
UUCP:  orandy@amdahl.amdahl.com
  or:  {sun,decwrl,hplabs,pyramid,ihnp4,seismo,oliveb,cbosgd}!amdahl!orandy
DDD:   408-737-5481
USPS:  Amdahl Corp.  M/S 249,  1250 E. Arques Av,  Sunnyvale, CA 94086

[  Any thoughts or opinions which may or may not have been expressed  ]
[  herein are my own.  They are not necessarily those of my employer. ]