home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 049.lha / MandelVroom.doc < prev    next >
Text File  |  1986-11-20  |  39KB  |  951 lines

  1. Message-ID: #765.pnet02.amiga/usenet 38915 chars. (74 more)
  2. From: orandy@amdahl.amdahl.com (Kevin Clague)
  3. Newsgroups: comp.sys.amiga
  4. Subject: Initial release of MandelVroom (1 of 8)
  5. Date: 20 May 87 01:13:59 GMT
  6. Organization: Amdahl Corporation,  Sunnyvale, CA 94086
  7.  
  8.  
  9.   I've been working on a Mandelbrot program for the Amiga for a long time,
  10. and I've finally stopped development long enough to post a first revision.
  11. This is my first posting to the net, I hope you like it.
  12.  
  13.   The whole package consists of eight shar files.  If you are reading
  14. this, you already got the first shar file.  If you don't want the source,
  15. all you need to keep is parts 1 and 2.  If you want the source, you must
  16. collect all eight parts to this posting.
  17.  
  18.   Here is a summary of the contents of each part of the posting:
  19.  
  20.        part    summary
  21.          1       README MandelVroom.doc
  22.          2       MandelVroom.uue
  23.          3       MandelVroom source code
  24.          4       MandelVroom source code
  25.          5       MandelVroom source code
  26.          6       Charlie Heath's file name requester source and diffs
  27.          7       Some Amiga Developers disk IFF stuff
  28.          8       More Amiga Developers disk IFF stuff
  29.  
  30.   Please note that due to the brain-damaged nature of system five,
  31. MandelVroom.doc and MandelVroom.uue have been renamed MandVroom.doc
  32. and MandVroom.uue.  This is so the #$%@! file names are fourteen
  33. characters long or less.  Please rename them when you get them unshared.
  34.  
  35.   If you want to compile MandelVroom, you will need start with a blank
  36. floppy. You will then want to perform the following steps:
  37.  
  38.          1. Format a floppy in df1:
  39.          2. change directory into df1:
  40.          3. make a directory called 'src'
  41.          4. change directory into 'src'
  42.          5. make a directory called 'MandelVroom'
  43.          6. make a directory called 'GetFile'
  44.          7. make a directory called 'IFF'
  45.          8. change directory into 'IFF'
  46.          9. make a directory called 'iff'
  47.  
  48. Note: you are not required to use df1:, I just picked it as an example.
  49.  
  50.   Once you have prepared an empty file system, you need to copy the
  51. shar files into specific directories.  The table below shows you
  52. which shar files go into which directories.
  53.  
  54.        part     directory
  55.  
  56.          1      df1:
  57.          2      df1:
  58.          3      df1:src/ManelVroom
  59.          4      df1:src/ManelVroom
  60.          5      df1:src/ManelVroom
  61.          6      df1:src/GetFile
  62.          7      df1:src/IFF
  63.          8      df1:src/IFF/iff
  64.  
  65.   You must then unshar each of the files, and read the README's in each
  66. directory.  There are Makefiles for each of the source directories.
  67. You should make the IFF stuff first.  Then you will need to make
  68. Charlie Heath's file name requester (remember to apply the diffs file)
  69. next.  You need to make MandelVroom last, because MandelVroom's
  70. Makefile links all the objects together.
  71.  
  72.   The code will only work when compiled under Manx3.40a with patches.
  73. MandelVroom uses the new 1.2 function NewModifyProp.  Manx 3.40a
  74. without patches, produces an executable that will crash the system.
  75. There is a fair amount of assembly code in here, so it would be difficult
  76. to port it to Lattice.
  77.  
  78.   Please observe the copyright notice in all the sources posted.  I am
  79. using Charlie Heath's file name requester off the Fish Disks. I have
  80. reposted it with diffs, so as to comply with his posting restrictions.
  81. Please see his code in the GetFile directory for his copyright notice.
  82.  
  83.   The stuff in the IFF directory is from the Amiga Developer's IFF disk.
  84. These files contain copyright notices and restrictions.  These files
  85. came from Fish Disk 64.
  86.  
  87.   All my code is Freely Redistributable in both source and executable
  88. form, as long as the copyright notices remain intact, and is not for
  89. for non-commercial use.  That means you can give it away, but don't sell
  90. it.
  91.  
  92.   You are welcome to hack this code to death,  but I'd like to be kept
  93. informed of any new ideas or hacks you put into it, and I'd like to know
  94. if you make major changes and repost it.
  95.  
  96.   I am:
  97.  
  98.   Kevin L. Clague
  99.  
  100.   408 Tortolla Way
  101.   San Jose, CA 95133
  102.  
  103.   home phone: 408-258-9891
  104.   work phone: 408-737-5481
  105.  
  106.   I am permanently borrowing an account with access to usenet. Please
  107. see my signature for my net address.
  108.  
  109.   To those who try to recreate this beast, good luck....  To those
  110. who use it, happy Mandelbrot hunting!!!
  111.  
  112.  
  113.  
  114.  
  115.  
  116. # This is a shell archive.  Remove anything before this line, then
  117. # unpack it by saving it in a file and typing "sh file".  (Files
  118. # unpacked will be owned by you and have default permissions.)
  119. #
  120. # This archive contains:
  121. # README MandVroom.doc
  122.  
  123. echo x - README
  124. cat > "README" << '//E*O*F README//'
  125.  
  126.  
  127.  
  128.   I have been working on this Mandlebrot for some months and have
  129. finally decided to give it away in the public domain.  I hope you
  130. like it.
  131.  
  132.   It can only be compiled with Manx Aztec C, because some of the
  133. program is in Manx 68000 assembler format.  The Mandelbrot picture
  134. generators are in assembly for speed.
  135.  
  136.   The program uses contour map making techniques that allow you
  137. direct control over coloration of your Mandelbrot pictures.  Once
  138. you've generated a picture, you can recolor again in seconds.
  139. MandelVroom has a number of preset pictures that are examples
  140. of the kind of pretty pictures you can make.
  141.  
  142.   MandelVroom works best with more than 512K of ram, but I've tried
  143. to make some provisions for those of you without extra ram.
  144.  
  145.   The file named MandeVroom.doc contains a description of MandelVroom
  146. and how to use it.  I recommend reading it.
  147.  
  148.   For those of you who want or need to rebuild MandelVroom, good luck.
  149. MandelVroom's code is located in three directories.  The MandleVroom
  150. directory contains most of MandelVroom's code.
  151.  
  152.   The GetFile directory contains Charlie Heath's file name regiester
  153. from Fish Disk 41.  It also contains some files with diff's in them.
  154. Charlie's file name requester doesn't work to well in custom screens
  155. without them.
  156.  
  157.   You will need to combine Charlies code with the diff's to produce the
  158. code I use.  You will then need to perform a make in the GetFile
  159. directory.
  160.  
  161.   The IFF directory needs to contain a bunch of sources from the
  162. Amiga Developers IFF disk (Fish Disk 64).  See the 'readme' in the
  163. IFF directory for information on the files required.
  164.  
  165.   Sorry you have to run all over to get the stuff to rebuild this code,
  166. but I don't want to redistribute the IFF sources.
  167.  
  168.   Good luck with the program.  I hope you enjoy it.
  169.  
  170.  
  171.   Kevin L. Clague
  172.   408 Tortolla Way
  173.   San Jose, CA 95133
  174.  
  175.   home 408-258-9891
  176.   work 408-737-5481
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184. //E*O*F README//
  185.  
  186. echo x - MandVroom.doc
  187. cat > "MandVroom.doc" << '//E*O*F MandVroom.doc//'
  188.  
  189.   PURPOSE
  190.  
  191.   This document introduces you to MandelVroom, outlines it's features,
  192. and tells you how to use it.
  193.  
  194.   READINGS
  195.  
  196.   For a good explanation of Mandlebrot calculations, I recommend you
  197. look up the Computer Recreations column in the August 1985 edition
  198. of Scientific American magazine.
  199.  
  200.   You may want to read a book written by Dr. Benoit Mandelbrot, called
  201. "The Fractal Geometry of Nature", published by W. H. Freeman and Company.
  202. Dr. Heinz-Otto Peitgen and Dr. Peter Richter have written a very nice
  203. book called "The Beauty of Fractals".  It is published by Springer-Verlag.
  204. It has a some very nice pictures and is a good navigational guide. I
  205. recomend it.
  206.  
  207.   INTRODUCTION
  208.  
  209.   This program lets you navigate around the complex plane generating
  210. Mandelbrot pictures.  Picture data is saved in RAM allowing you to
  211. quickly recolor pictures using a powerful coloration mechanism.
  212.  
  213.   Once you've generated and recolored a picture, you can save it on
  214. disk in one of two formats: ILBM and MAND.  ILBM files are in IFF format.
  215. MAND files contain everything needed to recreate the picture.  It can
  216. take a long time to calculate Mandelbrot pictures.  MAND files allow
  217. you to save this precious data on disk.
  218.  
  219.   MandleVroom also has these features:
  220.     - Assembly language 32 bit fixed point Mandlebrot picture generator
  221.     - Assembly language Fast Floating Point Mandlebrot picture generator
  222.     - Picture presets
  223.     - Color palette
  224.     - Contour palette
  225.     - Mouse and graphics oriented user interface
  226.     - High resolution, interlace and halfbrite graphics modes supported
  227.     - Configurable number of bit planes
  228.     - Source in public domain
  229.  
  230.   TERMINOLOGY
  231.  
  232.   You need to know the following concepts to use this program:
  233.  
  234.     - Generators and Generation
  235.     - Navigation and Zooming
  236.     - Aspect Ratios
  237.     - Contours and Altitudes
  238.     - Pens and Colors
  239.  
  240.   GENERATORS AND GENERATION
  241.  
  242.   The generators perform Mandelbrot calculations over regions of the
  243. complex plane.  The generators produce a two dimesional array of
  244. iteration counts.  MandelVroom treats these iteration counts as
  245. altitudes.  You can use this program to navigate around the complex
  246. plane choosing regions to generate pictures over.
  247.  
  248.  Using preset locations as starting points, you can generate pictures.
  249. Once generated, you select a region within the picture that you want as
  250. the next picture.  When you start the generator, you 'zoom into' the
  251. new location in the complex plane.
  252.  
  253.   ASPECT RATIOS
  254.  
  255.   An aspect ratio is the ratio between the width and height of a rectangle.
  256. A square is a rectangle with a one to one aspect ratio.  The pixels on
  257. your screen have an aspect ratio that varies depending on graphics mode
  258. you are using.  MandelVroom takes the aspect ratios of the pixels into
  259. account when calculating pictures.
  260.  
  261.   Some Mandelbrot programs allow you to strech either the X or the Y
  262. axis.  In this case, a square picture window would not represent a square
  263. region in the complex plane.  MandelVroom will not allow you to do this.
  264.  
  265.   CONTOURS AND ALTITUDES
  266.  
  267.   Map makers often use color to indicate altitude in when making contour
  268. maps.  Contour maps usually have a 'key' indicating what colors relate
  269. to which altitude.  MandelVroom treats iteration count as altitude.
  270. It has a programmable key allowing you to assign pen numbers to ranges
  271. of altitudes.
  272.  
  273.   MandlVroom's programmable key is called the Contour Palette.  The Contour
  274. Palette contains thirty two contours.  You can use the thirty two contours'
  275. heights and colors to control the distribution of colors in your picture.
  276.  
  277.   PENS AND COLORS
  278.  
  279.   MandelVroom supports low resolution, high resolution, non-interlace,
  280. interlace, and half brite graphics modes.  In these graphics modes,
  281. the Amiga uses a hardware color indirection method for graphics
  282. display.  The Amiga hardware contains thirty two pens that can be filled
  283. with one of 4096 colors.  The following chart show how many pens
  284. the Amiga hardware supports for each graphics node.
  285.  
  286.                  Graphics Mode      Number of Pens
  287.                  ---------------- -----------------
  288.                   High Resolution         16
  289.                   Low Resolution          32
  290.                   Half Brite              64
  291.  
  292. Please note that interlace does not affect the number of pens available to
  293. you.
  294.  
  295.   MandelVroom has a Color Palette that allows you to copy, blend and
  296. exchange colors in the Amiga's color registers.
  297.  
  298.   STARTING MANDELBROT
  299.  
  300.   This version of MandelVroom can only be run from the CLI.
  301. To start the program, type:
  302.  
  303.                    MandelVroom
  304.  
  305.   When the program starts, it opens a custom screen and a Picture
  306. window.  It then generates a picture of the main Mandelbrot set.
  307. It will take a minute or two it to calculate this picture.
  308.  
  309.   THE MAIN MANDELBROT SET
  310.  
  311.   The black region in the middle of the picture is the Mandelbrot set.
  312. The bright area surrounding the Mandelbrot set is the place to explore.
  313. The darker regions outside the bright areas are of little interest.
  314. They are dark so they don't distract you from the interesting areas.
  315.  
  316.   NAVIGATION
  317.  
  318.   The Mandelbrot set is inside a circle of radius two, ceneterd about
  319. the origin of the complex plane.  The rectangular Picture window
  320. represents a rectangular region on the complex plane.  The pictures
  321. that MandelVroom generates depend on the regions you pick in the
  322. complex plane.
  323.  
  324.   MandelVroom generates pictures in the Picture window.  You can
  325. choose regions within the current picture to be the boundaries for
  326. the next picture.  When you generate, you will produce a big picture
  327. of the new region.  This is nicknamed 'zooming'.
  328.  
  329.   ZOOMING IN
  330.  
  331.   There are three steps to zooming in.
  332.  
  333.      1. Select a region for the next picture
  334.      2. Resize the Picture window if you like
  335.      3. Generate a new picture
  336.  
  337.   You select a region of the current picture using the Zoom Box.  The
  338. Zoom Box is a resizable and movable rectangle you use to box in a region
  339. for the next picture.
  340.  
  341.   THE ZOOM BOX
  342.  
  343.   You place, move, resize and close the Zoom Box using the mouse.  The
  344. following steps will open the Zoom Box in the Picture window:
  345.  
  346.       1. Pull down the Zoom Box item's Open sub-item
  347.       2. Place the mouse cursor in your Mandelbrot picture.
  348.       3. Depress and hold the left mouse button
  349.       4. Drag the mouse down and to the right
  350.       5. Release the left mouse button.
  351.  
  352.   The Zoom Box is a stick figure of an Intuition window.  The Zoom Box
  353. has a drag bar, resize gadget, and a close gadget.  The drag bar and
  354. close gadgets are at the top of the Zoom Box.  The resize gadget is in
  355. the lower right hand corner of the Zoom Box.
  356. The Zoom Box looks like this:
  357.  
  358.             +--- Close Gadget    +--- Drag Bar
  359.             |                    |
  360.             v                    v
  361.          +-----+----------------------------------+
  362.          |     |                                  |
  363.          |     |                                  |
  364.          +-----+----------------------------------+
  365.          |                                        |
  366.          |                                        |
  367.          |                                        |
  368.          |                                        |
  369.          |                                        |
  370.          |                                        |
  371.          |                                        |
  372.          |                                    +---+
  373.          |                                    |   |<---- Resize Gadget
  374.          |                                    |   |
  375.          +------------------------------------+---+
  376.  
  377.  
  378.   This is how you move the Zoom Box:
  379.  
  380.       1. Place the mouse cursor in the Zoom Box's drag bar
  381.       2. Depress and hold the left mouse button
  382.       3. Drag the Zoom Box around with the mouse
  383.       4. Release the left mouse button
  384.  
  385.   This is how you resize the Zoom Box:
  386.  
  387.       1. Place the mouse cursor in the Zoom Box's resize gadget.
  388.       2. Depress and hold the left mouse button
  389.       3. Resize the Zoom Box using the mouse
  390.       4. Release the left mouse button
  391.  
  392.   You can close the Zoom Box one of two ways:
  393.  
  394.       1. Press the Zoom Box's close gadget
  395.       2. Pull down the Close subitem of the Zoom Box item
  396.  
  397.   If you place a Zoom Box, and then decide you don't want to zoom,
  398. you can close the Zoom Box.
  399.  
  400.   RESIZING THE PICTURE WINDOW
  401.  
  402.   Once you've placed and sized your Zoom Box, you will want to resize
  403. the Picture window to have the same aspect ratio as your Zoom Box.  If
  404. you don't, when you generate you may get too little or too much of
  405. the area on the right side of the Zoom Box.
  406.  
  407.   GENERATING NEW PICTURES
  408.  
  409.   If you pull down the Generate item of the Project menu,  MandelVroom
  410. will generate a new picture for you.  Using the zoom box and the
  411. generator, you can repeatedly zoom in until you find things you
  412. think are interesting.
  413.  
  414.   STOPING THE GENERATORS
  415.  
  416.   Pictures take from minutes to hours to generate.  You can stop the
  417. generator by pulling down the Stop item of the Project menu.  Once stopped,
  418. the generators can not be restarted, except at the begining of the
  419. picture. Once the generator is stopped, you can proceed as though the
  420. whole picture was calculated.
  421.  
  422.   CHANGING MAGNIFICATIONS
  423.  
  424.   MandelVroom is like a microscope with variable magnification.  Every
  425. time you zoom in and generate a new picture,  you increase the
  426. magnification of your microscope.  You can also change the
  427. magnification by changing the height of the picture window.
  428. Making the picture window taller increases the magnification.  Making
  429. the picture window shorter decreases the magnification.
  430.  
  431.   If you make the picture window wider, while not changing it's height,
  432. you will not change magnification factor.  You will get a picture
  433. covers a wider piece of the complex plane.
  434.  
  435.   If you want to make a large version of a small picture, all you need
  436. to do is resize the window and generate.  You must take care to make
  437. sure the aspect ratio of the original window and the new window are the
  438. same.  If you make the picture too narrow, some of the things you want
  439. in the picture may be cut off.  If it is too wide, you may have extra
  440. things in your picture.
  441.  
  442.   The same is true for the relative aspect ratios of the zoom box and
  443. the picture window.
  444.  
  445.   GOOD NAVIGATING
  446.  
  447.   This program has nice facilities for zooming into the Mandelbrot set.
  448. It is severly lacking in methods for zooming out.  It's saving grace is
  449. that you can save interesting pictures to disk.  You can also reload
  450. these pictures and resume zooming.  You can use use disk files to
  451. record your journey in search of the ultimate Mandelbrot picture.
  452. File access is discussed in the LOADING AND SAVING section.
  453.  
  454.   The best way to be a good navigator is to practice.  Start by generating
  455. a picture of the main Mandelbrot set.  Zoom in on the perimiter of
  456. the set.  Try not to get too much Mandelbrot in the picture, it takes
  457. a long time to calculate.  If you like the picture, you can save it
  458. on disk, and zoom somewhere into the picture.  Keep doing this and
  459. you are bound to find something nice.
  460.  
  461.   Good navigating is an art.  Good subject placement and framing can make
  462. a world of difference in a picture.  Sometimes you want lot's of detailed
  463. real estate in the picture (like a picture of Yosemite Valley.)  Other
  464. times you want to isolate and capture a small object (like a picture
  465. of a small flower.)
  466.  
  467.   WHAT'S NEXT
  468.  
  469.   Once you have a picture generated, you probably want to recolor it.
  470. The next section explains how to pick and choose colors for your picture.
  471.  
  472.   PICTURE RECOLORING
  473.  
  474.   You can use the Color Palette and the Contour Palette to recolor a
  475. MandelVroom picture.  You can use the Color Palette to affect the
  476. colors in you pens.  You can also use the Contour palette to change
  477. the distribution of pens and colors in your picture.  The next
  478. section explains the use of the Color Palette.  The Contour palette is
  479. discussed in the THE CONTOUR PALETTE section.
  480.  
  481.   THE COLOR PALETTE
  482.  
  483.   You can open the Color palette by pulling down the Color item of the
  484. Edit menu.  The color palette looks like this:
  485.  
  486.         +---+-------------------------+---+---+
  487.         | . | Color                   |   |   |
  488.         +---+-------------------------+---+---+
  489.         |                                     |
  490.         | ++ ++ ++ ++  R  G  B  +---+         |
  491.         | ++ ++ ++ ++           |   | Copy    | <-- copy a pen's color
  492.         |             ++        +---+         |
  493.         | ++ ++ ++ ++                         |
  494.         | ++ ++ ++ ++    ++     +---+         |
  495.         |                       |   | Spread  | <-- Spread from pen to pen
  496.         | ++ ++ ++ ++           +---+         |
  497.         | ++ ++ ++ ++       ++                |
  498.         |                       +---+         |
  499.         | ++ ++ ++ ++           |   | Exchg   | <-- Exchange two pens
  500.         | ++ ++ ++ ++           +---+         |
  501.         |                                     |
  502.         | ++ ++ ++ ++                         |
  503.         | ++ ++ ++ ++                         |
  504.         |                                     |
  505.         | ++ ++ ++ ++                         |
  506.         | ++ ++ ++ ++                         |
  507.         |                                     |
  508.         | ++ ++ ++ ++                         |
  509.         | ++ ++ ++ ++                         |
  510.         |                                     |
  511.         | ++ ++ ++ ++                         |
  512.         | ++ ++ ++ ++                         |
  513.         |                                     |
  514.         +-------------------------------------+
  515.           ^        ^   ^  ^  ^
  516.           |        |   |  |  |
  517.           |        |   +--+--+-- RED/GREEN/BLUE potentiomenters
  518.           |        |
  519.           +--------+- Pens
  520.  
  521.  
  522.   ADJUSTING PEN COLORS
  523.  
  524.   You can use the Red, Green, and Blue potentiometer gadgets to adjust a
  525. pen's color components.  The following steps show you how to change a
  526. pen's color:
  527.  
  528.        1. Click the mouse on the pen you want to modify.
  529.        2. Adjust it's color using the R/G/B potentiometer gadgets.
  530.  
  531.   COPYING PEN COLORS
  532.  
  533.   You can copy one pen's color into another pen by performing the following
  534. steps:
  535.  
  536.        1. Click the mouse on the pen you want to copy
  537.        2. Click the Copy gadget
  538.        3. Click the pen you want to change
  539.  
  540.   SPREADING PEN COLORS
  541.  
  542.   You can create a range of colors between pens (e.g. a range of pens from
  543. dark green to light green) using the Spread gadget.  You use the spread
  544. gadget in the following way:
  545.  
  546.        1. Click the mouse on a pen at one end of the range
  547.        2. Click the Spread gadget
  548.        3. Click the mouse on the pen at the other end of the range
  549.  
  550.   EXCHANGING PEN COLORS
  551.  
  552.   These steps will exchange two pen colors:
  553.  
  554.        1. Click the mouse on one of the pens you want to exhange
  555.        2. Click the mouse on the Excg gadget
  556.        3. Click the mouse on the other pen
  557.  
  558.   NOTES ON CHANGING PEN COLORS
  559.  
  560.   Be very careful when changing the top four pens in the left most
  561. column of pens.  These pens are used by the system to render windows and
  562. screens.  If you make these pens the same color, you may have problems
  563. seeing MandelVroom's controls.
  564.  
  565.   The Amiga uses pens 17 through 19 when drawing the mouse cursor.  If
  566. change these pens, the cursor may be hard to work with.
  567.  
  568.   The Zoom Box on the picture window is rendered using a drawing mode
  569. called complement.  When the system is drawing a line in complement
  570. mode, it negates the pen number in each pixel in the line.  If you have
  571. five bit planes, you have thirty two pens.  The complement of pen 0 is
  572. pen 31.
  573.  
  574.  It you draw a line in complement mode, you can erase it by drawing the
  575. same line again in complement mode.
  576.  
  577.   If complementary pens have similar colors in them, then object drawn
  578. in complement mode is unnoticable.  If you have problems finding your
  579. Zoom Box, check out your pen colors.
  580.  
  581.   THE CONTOUR PALETTE
  582.  
  583.   The Contour Palette is a powerful control mechanism for coloring your
  584. Mandelbrot pictures.  It has thirty two contours.  Each contour has a pen
  585. and a height.  MandelVroom expects to find the contours' heights decreasing
  586. as you traverse the list of contours from 0 to 31.  Given this, a contour
  587. actualy represents a range of heights.
  588.  
  589.   Here is an example description of the list of four contours:
  590.  
  591.          Contour  Contour  Contour       Contour
  592.          Number   Height     Pen          Range
  593.          -------  -------  -------      ---------
  594.             0      1023       0         1023-1023
  595.             1       500      10         1022-500
  596.             2       300       1          499-300
  597.             3       100       2          299-100
  598.  
  599.   OPENING THE CONTOUR PALETTE
  600.  
  601.   You can open the Contour palette by pulling down the Contour item of
  602. the Edit menu.  The Contour Palette looks like this:
  603.  
  604.                 +---+-------------------------------------------+--+--+
  605. status line ->  |   | C: 0   H: 1023  P: 0                      |  |  |
  606.                 +---+-------------------------------------------+--+--+
  607.                 |                                                     |
  608. set pen or  --> | .. .. .. .. .. .. .. .. .. .. Set      +---+        |
  609. height gadgets  | .. .. .. .. .. .. .. .. .. ..       .. |   | ReColor|
  610.                 |                                        +---+        |
  611. increment   --> | .. .. .. .. .. .. .. .. .. .. +                     |
  612. height          | .. .. .. .. .. .. .. .. .. ..                       |
  613.                 |                                        +---+        |
  614.             +-> | ..                                     |   | Smooth |
  615.             |   | ..                                     +---+        |
  616.             |   |                                                     |
  617.             |   |    ..                                               |
  618.             |   |    ..                                               |
  619. height      |   |                               Alt.                  |
  620. potentiomenters |       ..                                            |
  621.             |   |       ..                                            |
  622.             |   |                                                     |
  623.             |   |          .. .. .. .. .. .. ..                       |
  624.             +-> |          .. .. .. .. .. .. ..                       |
  625.                 |                                                     |
  626.                 |                                                     |
  627. decrement   --> | .. .. .. .. .. .. .. .. .. .. -                     |
  628. height          | .. .. .. .. .. .. .. .. .. ..                       |
  629.                 |                                                     |
  630.                 +-----------------------------------------------------+
  631.                   ^                             ^      ^    ^
  632.                   |                             |      |    |
  633.                   +---------- Contours ---------+      |    + Commands
  634.                   0  1  2   .........     30 31        |
  635.                                                        +-- Ceiling
  636.  
  637.  
  638.   As the generator calculates pictures, it saves the data in RAM.  Once
  639. the picture is generated, you can change the Contour Palette and recolor
  640. the picture.  When you push the 'ReColor' gadget, MandelVroom traverses
  641. the Mandelbrot data, converting altitude to pen, and plotting pens in the
  642. picture window.  This mechanism allows you to recolor the picture quickly
  643. and repeatedly until you are happy with the way it looks.
  644.  
  645.   Each contour has four gadgets: a set gadget, an increment height gadget,
  646. a height potentiometer, and a decrement height gadget.
  647. These are used to modify a given contour's height and/or pen.
  648.  
  649.   SETTING A CONTOUR'S PEN
  650.  
  651.   You can use any pen for any contour.  To do this, you must have both the
  652. Contour and Color Palette windows open.  To set a contour's pen, click it's
  653. Set gadget and the click a pen in the Color Palette.  Notice there is no
  654. change in the Picture window?  The change will not take place until you
  655. hit the ReColor gadget of the Contour window.
  656.  
  657.   SETTING A CONTOUR'S HEIGHT
  658.  
  659.   You can set a given contour's height, by adjusting it's potentiometer
  660. gadget.  You can use the increment and decrement gadgets to fine tune
  661. contours' heights.
  662.  
  663.   You can also set a given contour's height by clicking it's Set gadget
  664. and clicking a point on the Picture window.  The program will look up
  665. the height associated with the pixel you click and use that as the
  666. contour's new height.  This is the most useful way of setting a contour's
  667. height.
  668.  
  669.   Height changes do not affect the picture until you press the ReColor
  670. gadget of the Contour window.
  671.  
  672.   NOTES ON CONTOURS
  673.  
  674.   MandelVroom expects contours' heights to decrease as you traverse the
  675. list of contours from 0 to 31.  Any contour that does not meet this
  676. expectation is ignored.
  677.  
  678.   SMOOTHING CONTOURS
  679.  
  680.   You can evenly distribute a set of contours' heights by using the
  681. Smooth gadget.  This is comparable to the Color palette's Spread
  682. gadget.
  683.  
  684.   Example:
  685.  
  686.   pull the far right contour's potentiometer gadget down to the bottom
  687.   (e.g. set that contour's height to 0.)  Pull the far left contour's
  688.   potentiometer gadget all the way to the top.  Click the smooth gadget.
  689.   Click the right-most contour's set gadget.  All the contours in the
  690.   middle change.  They are evenly distributed.
  691.  
  692.   Soothing of contours can be done between any two contours.  The
  693. contour settings created by the above example do not lend themselves to
  694. very good pictures.  You are in charge of deciding what heights and colors
  695. are appropriate for each picture.
  696.  
  697.   A RECOLORING METHOD
  698.  
  699.   The contour method is very powerful for recoloring Mandelbrot
  700. pictures.  When starting in to color a new picture, I usually set contour
  701. two to a black pen with zero height.  I then vary the height of contour
  702. one until I get the amount of color want.  I then restore contour one's
  703. original height and pen.  I then set contour thirty one's height to zero.
  704. Using the Smooth command, I evenly distribute all the contours between
  705. contour thirty one and contour one.  I then recolor the picture using
  706. the Recolor gadget.
  707.  
  708.   Looking at the colors in the contours and the colors on the picture,
  709. I can find the lowest point in the picture.  I set contour thirty one's
  710. height using the picture window.  Again I smooth the points between
  711. contour one and contour thirty one, and recolor the picture.
  712.  
  713.   This gives me the height of the highest non-Mandelbrot point in
  714. the picture in contour one.  I also have lowest point height in
  715. contour thirty one.  This gives me a feel for the distribution of
  716. point's heights in the picture.
  717.  
  718.   THE CEILING GADGET
  719.  
  720.   The potentiometer gadgets serve a couple of purposes. They allow you to
  721. set a given contour's height.  They also allow you to see (roughly) what
  722. the contour's height's are.
  723.  
  724.   In most Mandelbrot pictures, very few points
  725. fall in the top half of the possible iteration count range.  Typically
  726. by the sixth contour, the remaining potentiometer's are at the same
  727. pixel height in the window (although they have different heights).
  728.  
  729.   The Ceiling gadget allows you to get a better look at the shorter
  730. contours.  Move it around and watch what it does. The contour's
  731. potentiometers change, but the contour's height's don't. Comprende?
  732.  
  733.   I have very hard time explaining this one.  Moving the ceiling gadget
  734. does not affect the picture.  It only affects the display of the
  735. contour's potentiometer gadgets.
  736.  
  737.   I guess the best thing is to just set the ceiling to varous values
  738. until you see what it does.
  739.  
  740.   THE STATUS LINE
  741.  
  742.   There is a status line in the Drag bar of the Contour window. It shows
  743. you information about the current contour.  When you select a contour's
  744. select gadget, the program will display the contour number, the contour's
  745. height range and pen in the status line.  You can use this to
  746. find out what numbers are in which contours.
  747.  
  748.   SAVING AND LOADING
  749.  
  750.   You can save and load raw Mandlebrot data files on floppies.  The
  751. program saves all the data necessary to generate and zoom new pictures.
  752. This can be very usefull for saving your place while you are navigating.
  753. If you zoom in, and don't like it, you can pull where you were off disk.
  754. You can load MAND files using the Project menu's Load item.  The Save
  755. item, of the Project menu, has a MAND sub-item that is used to save
  756. MAND files on disk.
  757.  
  758.   SAVING ILBMS
  759.  
  760.   You can save pictures in ILBM format.  This allows you to take pictures
  761. from this program and use them in slide shows or in DPaint.  You can
  762. save ILBM files by using the ILBM sub-item of the Project menu's Save
  763. item.
  764.  
  765.   CONFIGURING AMIGA GRAPHICS
  766.  
  767.   The program allows you to use many of the Amiga's graphics modes.  It
  768. supports: low and high resolutions, non-interlace and interlace, and
  769. halfbrite mode (yes, I have a half bright denice.)  The program also
  770. allows you to chose the number of bit planes to use.  The number of bit
  771. planes affects the number of pens you can have for coloring Mandelbrot.
  772.  
  773.   You can change the graphics modes of the program by pulling down the
  774. ViewModes item of the Edit menu.  The ViewModes item has three sub-items:
  775. HIRES, INTERLACE, and HALFBRITE.  These are used to configure ViewModes.
  776. Once you have ViewModes configured, pull down the NewScreen item of the
  777. Project menu.  The program will close the old screen and open a new one
  778. with your new specifications.
  779.  
  780.  Beware: HALFBRITE and HIRES are mutually exclusive.  The program will
  781. not allow you to configure ViewModes in ways that the Amiga hardware
  782. can't handle.
  783.  
  784.   You can change the number of bit planes using the list of depths
  785. available in the Depth item of the Edit menu.  It allows you to use
  786. from 1 to 6 bit planes.  Some combinations of Depths and ViewModes
  787. are illegal.  HIRES screens can only have four bit planes.  HALFBRITE
  788. screens require six bit planes.  The program modifies the number of
  789. bit planes to a legal value where required.
  790.  
  791.   GENERATORS
  792.  
  793.   The Mandelbrot set has infinite detail.  The Amiga has finite
  794. numerical precision. This precision limits how far down you can zoom
  795. into the Mandelbrot set.  This program has two generators: a 32 bit
  796. fixed point generator, and a Motorola Fast Floating Point generator.
  797. They both perform the same Mandelbrot calculations, they just use
  798. different data formats.  Both generators are finely tuned, had crafted
  799. assembly.  Good performance was the goal.
  800.  
  801.   The 32 bit fixed point generator is considerably faster than the
  802. floating point generator.  The fixed point generator can not zoom in
  803. as far as the floating point generator.   I use the fixed point generator
  804. until the lack of precision becomes unbearable.  I then switch to the
  805. floating point generator.  You can switch between fixed point and floating
  806. point generators in the Generator item of the Edit menu.
  807.  
  808.   The floating point generator allows you to configure the number of
  809. iterations done in the Mandelbrot calculation.  This is handy for
  810. quicker pictures at lower magnifications.  The farther you zoom in,
  811. the higher the iteration count required (generally.)  The fixed point
  812. generator always uses 1023 as the maximum iteration count.
  813.  
  814.   PRESET LOCATIONS
  815.  
  816.   This program has a number of preset pictures that I think are very
  817. pretty.  The first preset generates a picture of the main Mandelbrot
  818. set.  The presets are intended as examples of good navigation and
  819. coloration.  I hope you like them.  To generate a preset picture, pull
  820. down a preset item and release. The program prepares itself and
  821. generates the picture.
  822.  
  823.   All the presets produce small pictures.  If you want to generate
  824. large versions of the presets, you can stop the generator, resize
  825. the picture window, an pull down the Generate item of the Project menu.
  826.  
  827.   SAVING TIME
  828.  
  829.   Mandelbrot calculations take a long time.  One way to avoid long
  830. calculation times is to generate small pictures without many points in
  831. the Mandelbrot set.  Use small Picture windows while zooming in on
  832. something, then make the Picture window large when you've found
  833. something you really like.
  834.  
  835.   Another interesting way to save time is to not watch the picture
  836. generate.  If you are using 5 or more bit planes in low resolution
  837. graphics mode, the video hardware steals memory bus cycles from the
  838. 68000.  Other graphic modes and bit plane combinations also degrade
  839. 68000 performance.  When generating somethime,  watch the speed of the
  840. generator.  Pull the screen down three fourths of the way down the
  841. monitor.  See the generator speed up?  If you are in a real hurry,
  842. you can pull all the screens down.  In this case, the video hardware
  843. hardly uses any memory bus cycles, the only problem is you can't
  844. see anything.
  845.  
  846.   MEMORY HOGGING
  847.  
  848.   This program can consume a lot of memory.  It allocates a word of memory
  849. for each pixel in a picture.  A 640 by 400 window requires 512K bytes
  850. of memory.  If you have a 512K Amiga, you will not be able to generate
  851. full screen interlace or high resolution pictures.  You can, however,
  852. generate smaller pictures in these graphic modes.
  853.  
  854.   ADVANCED TOPICS
  855.  
  856.   Mandlebrot calculations are CPU and memory intensive. You can do some
  857. things to reduce memory consumption (LORES, NONINTERLACE, 1 bit plane).
  858. It is hard to reduce the CPU usage.  This program can multitask, but
  859. it will interfere with other programs running at the same priority.
  860. You can use the ChangeTaskPri function available under Workbench 1.2
  861. to set Mandelbrot's priority lower than other programs you might want
  862. to run.
  863.  
  864.   You might also notice that not all Mandelbrot pixels take the same
  865. amount of time to calculate.  I have a Mandelbrot detection algorithm
  866. in both the fast floating point and fixed point algorithms.
  867.  
  868.   It turns out that the points inside the Mandelbrot set cycle.  My
  869. generators use a trace mechanism to detect these rings.  If a ring is
  870. detected, then the pixel is Mandelbrot.  It saves lots of time when
  871. calculating the main Mandelbrot set.  It saves less as you zoom in.
  872.  
  873.   SOMEDAY
  874.  
  875.   I have tons of new ideas and feature that I would like to add.
  876.   Some are:
  877.  
  878.     - Fixed point generator sensitive to Max Index
  879.     - Double precision fixed point generator
  880.     - IEEE floating point generator
  881.     - Generator runs as seperate task
  882.     - change task priority built into program
  883.     - movable magnifying glass generator
  884.     - other fractal generators (julia curves....)
  885.     - key in generator's maximum iteration counts from the keyboard
  886.  
  887.     - Good zoom out controls
  888.     - record a history of points you've been to.
  889.     - key in complex plane locations from keyboard
  890.     - a 'You are here --->' display feature
  891.     - proportional zoom box and picture window controls
  892.  
  893.     - three dimensional rendering
  894.  
  895.     - Many more contours.
  896.     - assign a range of colors to a range of contours
  897.     - copy contour pen patters into other contours
  898.     - Auto-contouring.
  899.     - a histogram of altitudes in picture
  900.  
  901.     - Volume-Hue-Saturation controls in color palette
  902.     - Color cycling
  903.     - borderless picture window/screen
  904.     - overscan graphics
  905.  
  906.     - define IFF file format for Raw Mandelbrot information
  907.     - less ram usage
  908.     - a 68881 (oops! I guess I'll need new hardware)
  909.  
  910.   APOLOGIES
  911.  
  912.   Sorry this document is so big,  but I hope helps you understand how
  913. to use the program. I also apologize for any inacuracies in this document.
  914. Sorry for any bugs this program has.  I know they can be annoying.
  915.  
  916.   Finally I apologize for all the Amiga CPU time this program will
  917. consume.
  918.  
  919.   AUTHOR
  920.  
  921.   Kevin L. Clague
  922.   408 Tortola Way
  923.   San Jose, Ca 95133
  924.  
  925.   Home 408-258-9891
  926.   Work 408-737-5481
  927.  
  928.  
  929. //E*O*F MandVroom.doc//
  930.  
  931. echo Possible errors detected by \'wc\' [hopefully none]:
  932. temp=/tmp/shar$$
  933. trap "rm -f $temp; exit" 0 1 2 3 15
  934. cat > $temp <<\!!!
  935.      59    316   1888 README
  936.     741   4825  31439 MandVroom.doc
  937.     800   5141  33327 total
  938. !!!
  939. wc  README MandVroom.doc | sed 's=[^ ]*/==' | diff -b $temp -
  940. exit 0
  941.  
  942.  
  943. -- 
  944. UUCP:  orandy@amdahl.amdahl.com
  945.   or:  {sun,decwrl,hplabs,pyramid,ihnp4,seismo,oliveb,cbosgd}!amdahl!orandy
  946. DDD:   408-737-5481
  947. USPS:  Amdahl Corp.  M/S 249,  1250 E. Arques Av,  Sunnyvale, CA 94086
  948.  
  949. [  Any thoughts or opinions which may or may not have been expressed  ]
  950. [  herein are my own.  They are not necessarily those of my employer. ]
  951.