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