MandelMountains V1.1 by Mathias Ortmann Discover the Mandelbrot Set From a Completely New Point of View! MandelMountains gives you the ability to render wonderful three-dimensional images of blow-ups of the Mandelbrot Set. The well-known color strips of the usual Mandelbrot images become at once mountainsides that smoothly climb to high plateaus, leaving deep valleys between them. You may have already seen images of this type (e.g. on the covers of the books "The Beauty of Fractals - Images of Complex Dynamical Systems" by H.-O. Peitgen and P.H. Richter or "The Science of Fractal Images", edited by H.-O. Peitgen and D. Saupe) - here and now you have the tool to create them on your own! MandelMountains allows you to produce high-quality non-interlaced or interlaced (and even overscan) images of arbitrary areas of the Mandelbrot Set. You can easily define magnification windows to zoom deeper and deeper into this fascinating world. Since the development of this program took a lot of time and work, I release it as shareware. This means if you like and use this program, you should send me a little donation of about $10. This will make it possible to develop subsequent versions of MandelMountains. Suggestions, comments and bug reports are welcome, too. This is my address: Mathias Ortmann c/o Panes Strindbergstr. 5 D-8000 Munich 60 WEST GERMANY IMPORTANT! MandelMountains requires the following libraries to be in your libs:-Directory: - mathtrans.library - mathieeedoubbas.library 1. The Rendering Method The image is rendered from front to back. A virtual horizon line prevents hidden areas from being displayed. The brightness of the surface is de- termined by the angle the light falls on it. If the number of iterations exceeds a certain (user-defineable) value, the pixel is set in color instead of gray, thus remains of the usual color strips are visible on the high plateaus, a fact which greatly increases the plasticity of the image. The iterations are effected in pure, speed-optimized assembler code, using the Motorola Fast Floating Point format (FFP), while all other calculations occur in double-precision IEEE standard format. This yields acceptable calculation times (around 20 minutes to 4 hours) without precision problems, even at magnification factors of more than 10000. In one of the next versions of MandelMountains I will implement the option to use double-precision IEEE format also in the main iteration loop, which will allow magnification factors of several millions, but also dramatically increase computation times. However, if you own an 68881 or 68882 number cruncher, this will perfectly suit your needs. 2. The Display Format You can choose between three image sizes: Small for quick test calculations, Normal for the usual screen size (320x200/320x256) and Full for overscan format (352x240/352x282), which I recommend as ideal size. MandelMountains supports NTSC and PAL Amigas and recognizes by itself on which type of machine it is running. All images are generated in 32 color mode: 16 colors for the gray tones and 16 colors for the surface colors. Optionally you can enable the interlace mode, which will double the number of available colors: You now have 32 gray and 32 color tones, which will result in much smoother color ranges. Computation time is not affected by using interlace or non-interlace mode. 3. The File Format MandelMountains writes standard IFF files with an additional "MMD1" chunk which stores all parameters of the image, so you can load previously generated images and make further magnifications. You can load MandelMountains files with all available graphics software, but note that if the image is saved again, the MMD1 chunk will be destroyed, and you cannot load it with MandelMountains any more. 4. The Parameters An image is defined by several parameters. You can see and modify all of them in the window MandelMountains opens on the Workbench screen. First, there are the xmin/xmax/ymin/ymax values. They determine the rectangular part of the Mandelbrot set that is to be shown in the image (xmin/xmax represent the range of the real part, ymin/ymax of the imaginary part of c in the term z = z^2+c). The Depth value limits the number of iterations. If then the value of z has not exceeded a certain maximum, the point will be drawn in black. Increasing this value will result in a more detailed rendering of the border between color and black, but it will also increase computation time if there are larger areas of black. Normally, a Depth of 400 to 1000 is sufficient. Linear/Nonlinear Transformation: If your mountainsides look extremely steep, you should switch to Nonlinear Transformation (especially useful for magnifications of the Seahorse Valley!). ColorMin: If you wish to have the surface of your plateaus colored (and you surely will!), you set ColorMin to the number of iterations from which on a pixel is to be drawn in color. Increasing this value will make the colored areas smaller. The range of ColorMin is normally from 20 to 300 (set it to 0 if you wish no coloring). ColorDiv: This value determines the "step rate" for the surface colors. For example: You have a ColorMin of 100 and a ColorDiv of 50. The number of iterations for a point is 300. The color of the point is now (300-100)/50, i.e. 4. Usually ColorDiv is around 50 to 150. If you choose it too low, the colored areas on your surface will look rather fragmented. If you choose it too high, they will all have more or less the same color. HZoom: This very important value is the decimal logarithm of the factor all heights are multiplied with. If you choose this value too low, the whole surface will be flat like a sheet of paper, if you choose it too high, you will not see more than some vertical walls. This value is probably the most critical and must be chosen carefully. It depends very much on the magnification factor (increase it after each magnification) and can range from 2 (initial picture) to 25 (blow-ups of details in the Seahorse Valley for example). HSmooth: Sometimes it may occur that the border of a plateau looks rather fragmented. In this case, simply increase the HSmooth value. It can range from 0 up more than 200, depending on the HZoom value you are using. It must be said that you will have to experiment a little to get perfect results, but soon you'll get a feeling for these things (look at the sample pictures and their parameters). 5. The Menus Project Menu: Choosing the Load Image or Save Image option will bring up a file requester that allows you to choose a file name fore the image to load/save. Images are compressed before saving. Start Rendering: This option clears the current screen, brings it to front and starts the computation. Bounds Menu: Zoom In brings the current screen to front and creates a mouse-directable magnification window. Pressing the left mouse button while moving the mouse to the right/left changes the size of the window. The right mouse button confirms the magnification. Restore Aspect is useful when you have entered xmin/xmax/ymin/ymax values by hand. By restoring the aspect of width and height you ensure that the image does not look squeezed. Screen allows you to choose one of the three standard screen sizes and to toggle interlace on/off. Color Range Menu: This menu allows you to change the range of surface colors. Different color ranges may greatly change the impression of an image, so experiment a little. Available as from/to colors are: Black, Blue, Red, Magenta, Green, Cyan, Yellow and White. 6. When is a Picture Finished? Normally, you will wait until the screen is filled completely (up to the upper edge). In this case, the program stops the computation by itself. Sometimes, it may be necessary for aesthetical reasons to interrupt the rendering earlier (look at MM.03.pic to see what I mean). Then you have to click on the STOP Gadget at the right moment. Important: Clicking on the gadget near the depth gadget will make the current screen appear (with correct centering if it's an overscan screen), clicking on the screen and then pressing the right mouse button will make the screen disappear again. If you haven't got a true Fast-RAM machine, I recommend to click the screen to back during computation. This will save memory cycles for the CPU and greatly reduce computation time. Certainly, images will look better if rendered with the higher resolution of PAL Amigas, thus I recommend to recompute all submitted examples if you own a PAL machine. Special thanks go to Heinz-Otto Peitgen for publishing the formula that smoothes the surface of the Mandelbrot set in such a perfect way! It is called Continuous Potential Method for Mandelbrot Set (CPM/M) and can be found in chapter 4.2.4 of the book Heinz-Otto Peitgen/Dietmar Saupe (editors): The Science of Fractal Images Springer-Verlag New York Berlin Heidelberg 1988 ISBN 0-387-96608-0