Table of Contents
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
Table of Contents