home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 304.lha / Mandelbrot_v1.1 / ReadMe < prev    next >
Text File  |  1980-12-04  |  8KB  |  182 lines

  1. Didkovsky's Mandelbrot Generator v1.1 by Nick Didkovsky
  2.  
  3. This program generates user-selectable regions of the Mandelbrot Set.
  4. It does so extremely quickly, due to its use of scaled integer math,
  5. 68000 assembler optimization, and a particularly unique edge detection
  6. approach.  It is coded in JForth v2.0 and runs on any Amiga with 512K
  7.  
  8. ***************************  QUICK START ********************************
  9.  
  10. FROM THE WORKBENCH:
  11.  
  12. Double click on the Mandelbrot! icon.
  13. You will soon see an image of the Mandelbrot Set.
  14. Holding the left mouse button down, drag the mouse pointer across any region
  15. you'd like to explore in greater detail.
  16.  
  17. FROM THE CLI:
  18.  
  19. CD yourself to whatever path containing both the program Mandelbrot! and the 
  20. image file Mandel.iff (probably just cd df0: or cd df1:)
  21. Then type:
  22. Mandelbrot!
  23. You will soon see an image of the Mandelbrot set.
  24. Holding the left mouse button down, drag the mouse pointer across any region
  25. you'd like to explore in greater detail.  Your CLI window will report your
  26. current activities.
  27.  
  28.  
  29. ****************** SAVING IMAGES GENERATED BY MANDELBROT! ********************
  30.  
  31.  Format a blank disk and rename it PIX
  32.  Make sure that PIX: is available before you attempt to save an image 
  33.  generated by Mandelbrot!
  34.  
  35.  Alternatively, you can use the DOS command "assign" from the CLI:
  36.  assign PIX: somedisk:somedirectory
  37.  
  38.  Caveat:  
  39.  If PIX is unavailable to Mandelbrot! at the time you
  40.  request to save IFF, AmigaDOS will bring up a requester saying:
  41.  "Insert volume PIX: into any drive"
  42.  which by itself doesn't present a problem crash anything, except
  43.  by bringing up this requester, the image under the title bar of your
  44.  beautiful picture will be corrupted, so ... keep that in mind.
  45.  Make sure PIX: is available if you want to save screens! 
  46.  
  47.  Caveat: 
  48.  All images saved during one Mandelbrot! session will be saved to PIX:
  49.  with the indexed names Mandel000.iff, Mandel001.iff, Mandel.002.iff ...
  50.  Be sure to rename any such files before your next Mandelbrot! session,
  51.  or they will be overwritten by whatever new images you save.
  52.  
  53.  *************************** PROJECT MENU ******************************
  54.  
  55.  The Project Menu makes the following choices available:
  56.  
  57.  Restart    Resets the screen to the original Mandelbrot region.
  58.             Right Amiga R is a hot key for this choice.
  59.  
  60.  Save IFF   Saves the current screen to PIX: with an indexed filename
  61.             Mandel000.iff, Mandel001.iff, Mandel.002.iff and so on.
  62.             Right Amiga S is a hot key for this choice.
  63.  
  64.  Quit       Exits Mandelbrot! and frees up whatever resources it used.
  65.             Shows nice final credits for 5 seconds.
  66.             Right Amiga Q is a hot key for this choice.
  67.  
  68.  *************************** SCREEN MENU *****************************
  69.  
  70.  The Screen Menu makes the following choices available:
  71.  
  72.  320x200       Regenerate current region in low resolution. 
  73.                Right Amiga L is a hot key for this choice.
  74.  
  75.  320x400       Regenerate current region in medium interlaced resolution.
  76.                Right Amiga M is a hot key for this choice.
  77.  
  78.  640x400       Regenerate current region in high interlaced resolution. 
  79.                Right Amiga H is a hot key for this choice.
  80.  
  81.  Title Bar?    Make title bar visible or invisible.  
  82.                Title bar is automatically hidden when a new region is selected.
  83.                Right Amiga T is a hot key for this choice.
  84.  
  85. ********************************* CYCLE MENU ******************************
  86.  
  87. The frivolous Cycle Menu makes the following choices available:
  88.  
  89. Cycle?     Turn color cycling on/off
  90.            Right Amiga C is a hot key for this choice.
  91.        This ONLY works when an image is completed!!!
  92.  
  93. Slow       Set cycle speed to slow.
  94.            There is no hot key for this.
  95.  
  96. Med        Set cycle speed to medium.
  97.            There is no hot key for this.
  98.  
  99. Fast       Set cycle speed to fast.
  100.            There is no hot key for this.
  101.  
  102. Notice that just selecting a speed will not turn cycling on. 
  103.  
  104. **************************** SESSION LOG ************************************
  105.  
  106. The text file RAM:MandelbrotSession is created every time you run Mandelbrot!
  107. It contains useful info such as what values determine the regions you've
  108. selected, how long it took to generate your various screens, and so on.
  109.  
  110. You'll see some values for variables called acorner, bcorner, xgap, and ygap.
  111. Briefly, acorner is the x value of the top left corner of the screen,
  112. and bcorner is the y value.  Xgap is the numerical distance between horizontal
  113. pixels, ygap is the numerical distance between vertical pixels.  The number
  114. 1.0 is represented by 10000, so if you see something like acorner = 2,365
  115. this means that the top left x value is 0.2365
  116.  
  117. ***************************** A FEW DETAILS **********************************
  118.  
  119.  This approach to generating the Mandelbrot Set relies on the fact that
  120.  the set is "connected". (The set itself is drawn black in the image).
  121.  The connectedness of the Mandelbrot Set guarantees that an area surrounded
  122.  by Mandelbrot pixels will be filled with Mandelbrot pixels.
  123.  This program uses EDGE DETECTION on the set whenever it is
  124.  encountered: surrounds the set, and simply marks the entire interior as though
  125.  all those pixels were already calculated!
  126.  
  127.  THE PROGRAM NEVER HAS TO CALCULATE COSTLY INTERIOR MANDELBROT PIXELS!
  128.  
  129.  The amount of time this saves is tremendous,
  130.  as it is exactly these points that would take the most computation time.
  131.  
  132.  I have never had to wait more than about 15 minutes to generate a full
  133.  640x400 screen.  Typical time to generate a 320x200 might be as low as
  134.  1.5 minutes.
  135.  
  136.  I would like to see a mathematical proof of the correctness of this approach,
  137.  but for now, I am content with "proof by exhaustion" that is: it works because
  138.  it intuitively makes sense, I've run the program a million times,
  139.  and it has always worked.
  140.  Period.
  141.  QED
  142.  
  143. ******************************* A FEW MORE DETAILS ****************************
  144.  
  145. At some point, after enlarging the same region more and more, you will be
  146. puzzled that the program doesn't zoom in any farther.  This is because you
  147. have reached the limits of "magnification" so to speak.  One reason Mandelbrot!
  148. is so fast is that it uses scaled integer math instead of floating point math.
  149. The floating point value 1.0 is represented by the integer 16384.
  150. That means the smallest value the program can use is (1 / 16384) = 0.000061
  151. represented by the integer "1".
  152. Ok, THAT means that the smallest possible distance between adjacent pixels 
  153. on your screen is 0.00061.  Once you've zoomed in that far, you've maxed out.  
  154. Successive region selections will just move the region left, right, up, or down;
  155. it can't get in any closer.  Floating point math would get you in closer, but
  156. the difference in speed is so dramatic that I didn't even bother making it 
  157. available in this version of Mandelbrot!. Maybe future versions will give you
  158. the choice of switching to floating point when maximum zoom is reached.  
  159. Let me know what you want.
  160.  
  161. The maximum number of iterations is set in the file
  162. MandelShift2.asm as the constant MandelMax.  Increasing this
  163. number might give you better detail but will take longer to calculate.
  164. The currrent default is 350. With integer math there is not much
  165. advantage to more iterations because of accumulating errors.
  166.  
  167. Nick Didkovsky
  168. 171 East 99th Street #2O
  169. NYC NY 1OO29
  170.  
  171. (212) 879-2625 bbs
  172. (212) 369-1733 voice
  173.  
  174. This program is shareware.  Do not distribute it without this readme or without
  175. the mandel.iff image file.  But please distribute it to whoever you want.
  176.  
  177. Like it? Send $1O to me at the address above.
  178.  
  179. Coming soon (or at least eventually):
  180. Didkovsky's Mandelbrot Animator
  181. Didkovsky's Mandelbrot Mural Generator
  182.