home *** CD-ROM | disk | FTP | other *** search
- Message-ID: #765.pnet02.amiga/usenet 38915 chars. (74 more)
- From: orandy@amdahl.amdahl.com (Kevin Clague)
- Newsgroups: comp.sys.amiga
- Subject: Initial release of MandelVroom (1 of 8)
- Date: 20 May 87 01:13:59 GMT
- Organization: Amdahl Corporation, Sunnyvale, CA 94086
-
-
- 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. ]
-