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 14, 2024 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 14, 2024 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 14, 2024 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 14, 2024