XMANDEL(X) X Version 11 XMANDEL(X)
25 April 1992
NAME
xmandel - X11 interface to the Mandelbrot and Julia sets
SYNOPSIS
xmandel [-display display]
DESCRIPTION
Xmandel is a user friendly interface for generating and colouring
Mandelbrot and Julia sets. It initially comes up with with eleven or
so 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.
THEORY
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
- 1 - Formatted: November 2, 2025
XMANDEL(X) X Version 11 XMANDEL(X)
25 April 1992
the constant C by mouse selection in the Mandelbrot window.
BUTTONS
To control execution of the calculations, various buttons are
provided. The buttons are somewhat different between the Athena
Widget and Motif Widget implementations. The buttons are:
mandel
Calculates a Mandelbrot set from (-2.25, -1.5) to (1.0, 1.5) and
display it in the window provided.
Pressing a mouse button with the cursor in the drawing window
terminates the calculations.
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.
Pressing a mouse button in the drawing window terminates the
calculations.
Image
After the Mandelbrot or Julia set is generated, the Image button
identifies which set is to be used for various manipluations such
as zoom or +colour. If this button is pressed, the active image
toggles between "Mandel" and "Julia" to identify the set that is
to be manipulated.
The Motif implementation uses radio buttons for this toggle.
zoom In order to zoom in on a given area in the Mandelbrot or Julia
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.
To a certain degree, the zoom rubber banded box may be moved,
enlarged and otherwise resized by careful use of the mouse.
Zoom requests less than 5 pixels wide are ignored. The zoom
request may be terminated by pressing button 2 or 3 while
creating the rubber band.
- 2 - Formatted: November 2, 2025
XMANDEL(X) X Version 11 XMANDEL(X)
25 April 1992
If the Motif version is used, the zoom coordinates may be
specified in the ZOOM COORDINATES dialogue boxes. After the
desired coodinates are enterd, pressing the zoom button activates
the drawing.
unzoom
Return to previous zoom. Note that you can zoom all the way out
by selecting the mandel button.
recalc
Recompute the set at the current coordinates. This is useful to
redisplay the current image after the set's window has been
resized.
If the Motif version is used, the coordinates for recalculation
may be modified in the ZOOM COORDINATES dialogue boxes.
colour
The colour button selects colour rotation value to be applied
when the +colour or -colour buttons are used.
The "colour step" value is added to each pixel colour before
redisplay. The effectively rotates the image through the
available colour map. By default, the rotation value is set to
the number of bit planes: for an 8 bit display, the rotation
value is 8; for a 2 bit display, the rotation value is 2; etc.
The selected set and rotation value is "remembered" for use with
the +colour and -colour buttons.
The "rotate" dialogue box in the Motif edition is used to set the
colour rotation value.
+colour
The default set is rotated in a positive sense by adding the
previously specified colour rotation value to all pixels.
An interesting "colour zoom" effect can be achieved by first
setting the colour rotation value to 1 and rapidly pressing the
+colour or -colour button.
-colour
The default set is rotated in a negative sense by subtracting the
previously specified colour rotation value. In effect, -colour
undoes the effect of +colour.
gif Either the Mandelbrot or Julia image may be captured to a GIF
file. The Mandelbrot image is saved in the specified file name
if the Mandelbrot radio button is pressed, the Julia image is
saved if the Julia radio button is pressed.
- 3 - Formatted: November 2, 2025
XMANDEL(X) X Version 11 XMANDEL(X)
25 April 1992
For the Motif implementation, the desired file name is entered
into the Gif file dialogue box. Pressing the Save button saves
the default image (set by the radio buttons) as a gif file.
remove
Remove the Julia set window. It will be recreated if another
Julia display is requested.
This button is not used in the Motif edition: the Julia set may
be removed by closing the Julia window.
quit This causes xmandel to exit.
MOTIF NOTES
The default set is selected by the radio buttons mandel or julia. The
default set selection is used when the recalc, +colour, -colour, or
other buttons are pressed. For example, if the julia radio button is
selected, the recalc button will recompute the Julia set. The
Mandelbrot set is unaffected.
The additional dialog boxes allow you to manually provide the
Mandelbrot zoom coordinates. Changes to the POINT COORDINATES are not
allowed.
BUGS
The system works only with 1, 2, 4, or 8 bit displays: 24 bit display
systems are not supported.
Exposure events are examined after the generation of every 4th image
scan line: there is some delay after and exposure event before the
image is actually refreshed.
Xmandel cannot manipluate the colour map.
Performance is slow on workstations, especially workstations without
floating point hardware. Alternatively, extensive use of xmandel may
justify the purchase of a more powerful system.
AUTHOR
John L. Freeman (jlf@cray.com)
Changes for gif, Motif and SysV X11-R4:
Tony Field (tony@ajfcal.cuc.ab.ca)
- 4 - Formatted: November 2, 2025