mandel(6D)
mandel - display of Mandelbrot and Julia set images
As shipped in IRIX 6.5.7. Unchanged since IRIX 6.5.
NAME mandel - display of Mandelbrot and Julia set images SYNOPSIS mandel [-fjmopv] [-c <coord>] [-i max_iterations] [-n num_local_processes] [fname] mandelzoom DESCRIPTION Mandel is a program for exploring the Mandelbrot set and displaying Mandelbrot and Julia images. The demo consists of two executables: mandel and mandelzoom. The mandel program does mandelbrot calculations and also displays the resulting images. By default, it does this on a single host. However, mandel is capable of connecting to remote hosts which can contribute to the calculations. For this to happen, the mandelzoom program must exist on the desired remote host(s). mandel can then cause the remote mandelzoom programs to start executing, and it can connect to them. Resource File When mandel executes, it looks for a file named '.mandelrc,' first in the current working directory and then in the home directory. This file contains a list of host names and directory names where mandelzoom can be found, and also the values of some other options. See the mandelrc.sample file in the /usr/demos/General_Demos/mandel directory as a sample. If no .mandelrc file exists, mandel simply creates one or more processes on the local machine to do the calculations, and it connects to these process using unix pipes. The number of processes depends on the number of cpus. Within the .mandelrc file you may specify initial values for some of the options used by the mandel program. Allowable types of lines are as follows: 1. zoomdir: dirname "dirname" is the directory name where mandelzoom resides. The default zoomdir is /usr/demos/General_Demos/mandel. 2. logname: lname "lname" will be used as the default login name when making connections to hosts. 3. passwd: defpasswd This specifies the default passwd to be used with the default login name. Two quotes ("") denote an empty string. (Currently passwd is ignored.) 4. remhosts: hostname [-l loginname] [-p passwd] [dirname] mandelzoom is expected to reside in "dirname" on the host "hostname." If a directory name is not specified, then zoomdir is used. 5. color dir: dirname "dirname" is the pathname of the directory containing mandel color files. 6. row delta: <n> 7. rows per farmout: <n> 8. interpolate data: "yes" or "no" 9. sparse rows: "yes" or "no" or "use threshold" 10. sparse thresh: <n> 11. num local procs: <n> This is the number of local process created to do mandel/julia calculations. This is done entirely within mandel. This count does not include any mandelzoom executions. 12. rexec timeout: <n> This is the maximum number of seconds mandel will take in starting up a mandelzoom execution before it gives up. 13. color distrib: "linear" or "maximize [n]" where n is 1, 2, or 3 (or n may be omitted). Default values are used if none of the above are given. 14. A comment line, denoted by a "#" as the first character in a line. The mandelzoom program can be placed on up to MAXHOSTS remote hosts. MAXHOSTS is initialized to be 50. For those users who installed the demo source, MAXHOSTS is defined in mangfx.h. Options The mandel program may take options and arguments. mandel options -c <coord> A coordinate is to follow instead of fname. Coord format: xcorner ycorner side [seedr seedi] xcorner, ycorner (xcorner, ycorner) = complex coordinate of the lower left corner of the rectangle. In screen (pixel) coordinates, the rectangle has corners (0, ymin) and (xmax-1, ymax-1). side side = horizontal length of the complex rectangle. seedr, seedi (seedr, seedi) = coordinate of the (Julia) seed point. seedr & seedi exist only in the "extended format" implied by the -j option. -f Use a fixed-size window. fname is displayed with the same size as when it was saved. -i <n> Specify number of iterations to use for calculations. -j Do Julia calculations instead of Mandelbrot. Only applicable if coordinate is given. Also, implies that coord is an "extended coordinate" containing a seed point. -m max-precision floating point (128-bits). -n <n> Number of local (non-network) processes mandel uses for calculations. -o Compatibility with some old IRIS GL programs which use color cells 256 - 640. -p Calculation processes will send compressed data. (Useful if network bandwith is a limitation). -v Variable-size window. fname Name of file containing mandelbrot data. If fname is omitted, the image will be generated. mandelzoom options The mandelzoom program does not take any command line options. However, it reads various commands from stdin, and it writes mandelbrot data to stdout. Operation The left mouse button is used to drag out a rectangular area which will be zoomed. (This operation may be cancelled by pressing either middle mouse or the ESCAPE key while left mouse is still down.) The right mouse button brings up the menu. The menu items are as follows: generate allows you to re-generate the current picture (either zoomed or not), or to re-generate the previous image. From this menu, selecting current causes the current picture to be re-generated. Previous re-creates the previously displayed picture. First pic displays the first image. Home displays the initial mandelbrot set. Zoom out allows you to zoom out from the current image by one of a given range of zoom values. change colors allows you to select one of several color ramps. color distribution specifies how mandel maps the number of colors from the mandel data onto the number of display colors. The choices are linear maximize colors 1 maximize colors 2 maximize colors 3. If there are 32768 mandel data colors and, say, 4096 display colors, then linear causes the first 8 colors 0 - 7 to be mapped to color 0 of the display, colors 8 - 15 to be mapped to display color 1, etc. Unfortunately, the mandel data for a small rectangle might contain only some of the possible values 0 - 32767, and then the image displayed can appear to be mostly all the same color. Choosing one of the maximize colors selections remedies this situation. Internally, a histogram is created from the mandel data, and then the data is mapped to the display such that the resulting picture should have a good distribution of colors. As n increases in "maximize colors n", the less skewed the distribution of colors. Note that the various "maximize colors n" selections behave differently only if the number of distinct values in the mandel data is less than the number of display colors used by the mandel program. (If the hardware has more than 8 bit planes, mandel does 12-bit color-index drawing, and uses somewhat less than the 4096 entries in the colormap.) So, ... if an image was generated with a large iteration count, and if that image contains lots of different color values, then the 3 "maximize colors" selections will all do the same thing, which will still be different than the "linear" selection. #iterations selects the number of iterations to be performed from a range of values. save allows you to save the current image in one of 2 formats: mandel format or SGI RGB format. A file saved in the "mandel format" contains coordinate data, and if such a file is given as an argument to mandel, mandel will allow further zoom-in operations, etc., to be done on the displayed picture. Alternatively, the coordinate data for the current picture can be saved to a file. (If the latter is done, the picture can be re-generated with mandel -c `cat fname` where fname is the name of the file containing the coordinate data.) mode selects Mandelbrot or Julia set. If Julia is selected, a crosshair cursor appears for selecting the seed point. Use the left mouse button to pick a point. floating pt prec Choose between double precision floating point (64-bit) or long double (128-bit). configuration allows the user to select from the following submenu. interpolate. If row delta (see below) is > n, the picture is generated in n passes. Eventually, every scanline of the picture is generated. However, each pass contains only 1/n-th (approx.) of the total scanlines, and up till the final pass, there are gaps in the picture. As a scanline is generated, if there is a gap between that scanline and the one below or above it, and if interpolate is set to "yes," this causes the gaps to be filled in with "reasonable" mandelbrot data (by interpolating between the filled-in scanlines). row delta. If delta = 1, then rows are computed in the order ymin, ymin+1, ymin+2, ... However, if delta > 1, then rows are computed in the order ymin, ymin + d, ymin + d*2, ..., followed by ymin + k, ymin + d + k, ymin + d*2 + k, ... for appropriate k's until the picture is done. (Note: If row delta > 1 and "interpolate" is "yes," this allows an approximately accurate picture to be generated n times faster than by generating the entire picture with no gaps.) rows per farmout specifies the number of rows at a time which each host is given to calculate. If equal to 1, the computation is most equally divided among the hosts; however, this causes more network overhead, since mandel has to send out a command (to some remote host) for every scanline. sparse passes. If "sparse passes" is "yes," this causes the first pass (and only the first pass) to be split into 2 "sparse" passes, where each sparse pass is done by computing every other pixel of the scanline. For example, with row delta = 2 and "sparse rows" set to "yes", we have: pass 1a - every even pixel of scanlines 1, 3, 5, ... pass 1b - every odd pixel of scanlines 1, 3, 5, ... pass 2 - scanlines 2, 4, 6, ... The default is that the first pass is split into two sparse passes only if (#pixels per scanline) * (max iterations per pixel) >= threshold where "threshold" = 1,000,000. The idea is that the threshold will be exceeded only if the picture becomes large and computationally expensive to generate. The default threshold can be modified by specifying an alternate value in the .mandelrc file. stop drawing causes the processes doing calculations to stop, and causes the current image to stop drawing. exit quits the program. Error Handling When mandel encounters an error when reading data from a remote host, it will stop reading from that host for the duration of the current picture generation, but will try to use that host again next time, for the next picture. Color files mandel contains several default color maps, but it will look for alternate or additional color maps in data files beginning with the name "color". If you have a file named "colorxy," then "xy" will show up in the colors menu. By default these color files are searched for in the directory named "colors", but you may specify a different directory name by having a "color dir" entry in .mandelrc. Each line in a "color" file specifies a color by <red intensity> <blue intensity> <blue intensity> with intensities ranging from 0 to 255. Intensities may be delimited by commas, spaces, or tabs. The first color is that of the mandelbrot set and is usually black (0,0,0). Smooth ramps are made between the remaining colors, and the non-black part of the picture is drawn using those ramps. Example of color file contents: 0 0 0 40 0 0 240 0 0 240, 240, 0 240, 240, 240 Region Selections with the Mouse After a picture is displayed, the left mouse button can be used to select a new region to zoom in on. If the "Julia" mode is selected after first displaying a mandelbrot image, then the left mouse button is used for selecting a seed point for the Julia calculations. When the left mouse button is being used to select a region or seed point, the selection can be aborted by depressing either the middle or right mouse buttons or the escape key. Building If you chose to install the demo source, you will have received the source code for the mandelzoom program and a generic Makefile to build the binary. The mandelzoom source files are very portable (except for assumptions about sizes of certain data types). If you copy the mandelzoom source files (*), along with Makefile.generic, to just about any unix machine, and type make -f Makefile.generic mandelzoom the resulting mandelzoom program should work. (*) The file "zoomsrc" contains a list of the mandelzoom source files. AUTHOR Dave Spalding