xmandel - window based interface to Mandelbrot sets and Julia sets
xmandel [-display display]
Xmandel is a user friendly interface for generating Mandelbrot sets and
Julia sets. It initially comes up with with several command buttons, which are
described below, for controlling the execution. A Mandelbrot set is drawn in
the window of the initial form when the
mandel button is selected. A
separate window is created for drawing the Julia sets.
Let z0 be a number in the complex plane (x + yi). Choose a complex constant C.
Calculate z1 = z0 ** 2 + C. Repeat this recursively, so that z2 = z1 ** 2 + C,
z3 = z2 ** 2 + C and so on. z[n] will either tend to infinity or zero,
depending on its initial value and the constant C. Specifically if the
absolute value of z[n], expressed as |z| = sqrt(x**2 + y**2) is greater than
2, then the recursive formula will diverge.
So, to calculate a Julia set, take each point near (0,0i), and use the formula z
= z**2 + C recursively. The Julia set is the set of points for which z = z**2
+ C would iterate indefinitely for the constant C. Pixels, which represent
numbers in the complex plane, are set to the number of iterations before |z|
exceeds 2. This then becomes an index into the hardware colormap. Each color
then represents the number of iterations before divergence is detected.
To calculate a Mandelbrot set, again take each point near (0,0i), use the same
formula z = z**2 + C recursively. This time let C be the initial value of the
point itself (C = z0). Rather than having the same C for every point in the
complex plane as in Julia set calculations, C is different for each point in
the plane. Again let the pixel value be the number of iterations before |z|
exceeds 2.
On monochrome displays, the pixel value is set to 1 if the iteration count is
64, otherwise 0.
Mandelbrot sets and Julia sets are obviously closely related as can be seen from
the similarity of their respective formulas. If the constant C is chosen from
the interior of the Mandelbrot set, then the Julia set calculated from that
constant C will be connected, that is have no gaps or discontinuities. If the
constant C is chosen from outside the Mandelbrot set, the Julia set will be
disconnected, more like grains of dust (Fatou clouds). If the constant C is
chosen from the border of the Mandelbrot set, then the Julia set will be more
convoluted. Given this relationship between points in the Mandelbrot set and
the Julia set generated, Xmandel provides user selection of the constant C by
mouse selection in the Mandelbrot window.
To control execution of the calculations, various buttons are provided. The
buttons are:
- mandel -
- Calculates a Mandelbrot set from (-2.0, -1.5) to (1.0, 1.5) and display it
in the window provided.
- mandelzoom -
- In order to zoom in on a given area in the Mandelbrot set, a zoom button
is provided. The area to be zoomed in on is selected with the left mouse
button. Left button down begins the selection, dragging with left button
down draws a rubber banded box to show the zoom area, and left button up
begins the calculation. You can zoom in on a zoomed in area until you
reach the limits of the precision of your hardware. Selecting a zoom area
that crosses a window border doesn't work.
- unzoom -
- Return to previous zoom. Note that you can zoom all the way out by
selecting the mandel button.
- redo -
- Because the Mandelbrot calculations are CPU intensive, xmandel does not
restart the calculation automatically on receipt of an exposure event.
This is left up to user control. The redo button will simply recalculate
the current zoom level and display it in the Mandelbrot window. This is
also useful for seeing new detail when the iteration count is
increased.
- julia -
- Calculates a Julia set. The user is required to select a point inside the
Mandelbrot window using the left mouse button as the constant C for the
Julia set calculation. It will open a new window if needed. The Julia set
is centered around (0,0), going from (-1.5, -1.5) to (1.5, 1.5). Julia set
points can be selected from zoomed in Mandelbrot windows as well. Beware
of selecting points outside the Mandelbrot window.
- clear -
- Clears the Mandelbrot window.
- quit -
- Exit the xmandel program.
- increate iterations -
- On color displays, the iteration count (sometimes called dwell) is
initially set to 256, on monochrome, 64. The increate iteration
button will increase the interation count
by 256 on color or 64 on monochrome. This is useful for seeing more detail
when zoomed in.
- reset iterations -
- Will reset the iteration count to its default value of 256 or 64.
- hostname -
- The name of the host is displayed in the topmost pane. This is handy when
comparing the performance of multiple copies of xmandel.
- iteration count -
- The current iteration count is displayed in the second pane.
- current view -
- The region of the Mandelbrot being displayed is given in the bottommost
pane, as a range of x and y values in real coordinates.
- Julia set constant -
- Julia sets are displayed in a separate window, and the value of the
constant used for the Julia set calculation is given to the window manager
to be displayed in the title bar.
Xmandel uses hard coded values for button colors, assuming a 256 color colormap.
Xmandel deliberately does not handle exposure events.
Selecting a zoom area that crosses a window border doesn't work.
Performance is slow on workstations, especially workstations without floating
point hardware.
John L. Freeman
jlf@cray.com