Category : Printer + Display Graphics
Archive   : YABMP097.ZIP
Filename : YABMP.DOC

Output of file : YABMP.DOC contained in archive : YABMP097.ZIP
YABMP.DOC ver. 0.97

( for i486 or i386/387 )

Part 1. Introduction

1.0. Hardware Requirements

YABMP is a 32-bit Protected Mode program that requires an
i486 CPU (or an i386 CPU with i387 FPU). It runs under DOS
( version 3.3? or greater ) with a DOS Extender, which is

YABMP requires a VGA or SuperVGA Color Graphics Card and a
Color Monitor. Six VGA/SVGA modes are supported: 640 x 480,
800 x 600, and 1024 x 768 in both 256 and 16 colors. YABMP
has been tested with ATI Wonder XL, ATI Graphics Ultra, and
Paradise PVGA 1024 Video Cards, but the VGA modes should work
with most cards.

YABMP supports printing its figures with the Hewlett-Packard
LaserJet (tm) II or III.

1.1. Why Yet Another Brooks-Matelski Process Program?

Many programs are already available to compute and plot the MSet
(the so-called "Mandelbrot Set") and its associated JSets. Their
aim, however, often appears to be to produce these figures as a
kind of art or entertainment and their results are often mathe-
matically inaccurate and tend to obscure, rather than to
reveal and to clarify, the underlying mathematics. The aim of
YABMP is to produce the most mathematically accurate figures
of the MSet and of its associated JSets.

The visually (and mathematically!) most striking feature of the
MSet is that it contains infinitely many small copies of itself,
imbedded in itself near its boundary. A first requisite of a good
MSet figure is that these be conspicuous.

A second aspect of mathematical accuracy is the aspect-ratio
(i.e., the proportions) of the figure. That is, a square in the
complex plane must appear as a square in the figure. This means
that we are not free to specify all four corners of a rectangular
region in the plane. YABMP asks you only for the coordinates of
the center of the desired figure and its height --- the
appropriate width being determined so that the figure has the
correct aspect-ratio.

A third aspect of mathematical accuracy concerns the coloring of
the figure. There are, in principle, only two kinds of points in
these figures: There are points that belong to the set and there
are points that belong to the complement of the set. Thus, the
most mathematically accurate figures should require only two
colors. In practice, however, a third color is required for
pixels that correspond to points which lie very near the boundary
of the set. If you have not seen them before, you will be
astonished by the stark beauty of the three-color figures YABMP

1.2. The YABMP Distribution

This YABMP distribution consists of the following 7 files:

YABMP.EXE Requires an i486 CPU (or i386DX CPU with
i387DX FPU).

CPUID.ZIP Intel program to correctly determine your
CPU and FPU, before attempting to run YABMP.

DOS4GW.EXE Rational Systems (tm) DOS Extender. Must be
in the current directory or a pathed

YABMP.HLP Help File containing brief instructions to
be viewed from within YABMP.

YABMP.DOC This Documentation File.

YABMPCMD.ZIP Collection of *.CMD script files for auto-
matically producing and saving the figures
referred to in this documentation.

YABMPPAL.ZIP Collection of *.PAL palette files.

1.3. Installation

YABMP looks for all of its files (DOS4GW.EXE, BMPSCRN.CFG,
YABMP.HLP, the *.BMP Figure Files it produces, the *.CMD
script, and the *.PAL palette files) in the current directory.
Just copy all of the distribution files to a single
subdirectory on your fixed disk and run YABMP from that

1.4. File Compression and Printing Figures

YABMP provides no data compression. Even the very best data
compression and decompression routines take a significant time to
process the very large figure files that YABMP can generate.
Most figures are generated so quickly that it is not
worthwhile to save them beyond the current session. If you
should generate figures you want to keep, you can compress
them with PKZIP (tm) and decompress them for viewing.

YABMP is intended for use in exploring the MSet and its
associated JSets and quick producing accurate detail figures
for viewing. Data concerning a figure, which is displayed
before a recalled figure file is displayed, is displayed in
text mode and can be printed with PrintScreen.

Screen figures and figures printed from the screen can both
have the correct aspect ratio only if both screen and printer
pixels have the same proportions and, therefore, printing the
screen correctly is problematical.

YABMP supports printing its figures with the Hewlett-Packard
LaserJet II or III. Output may be directed to either LPT1:, to
an H-P .PCL File, or to an .HP file.

If you do not have a LaserJet connected to LPT1:, make an
H-P .PCL file and send it to a LaserJet later with the DOS
command: COPY name.PCL LPT1:/B, which produces the same
result as sending output directly to LPT1:. An *.HP file is
intended for inclusion in a document formatted with the TeX
typesetting system, using the TeX "special" command.

A conventional Graphics PrintScreen utility will print a solid
black rectangle, since every pixel on the YABMP screen is
colored. A PrintScreen utility, that can be gotten to print only
Color 2, in the current mode, can also print YABMP figures.

Part 2. Using YABMP

2.0 General.

When you first run YABMP, a Default Graphics Mode Selection
Screen will appear. The six VGA and SuperVGA graphics modes,
that are supported by YABMP, will be displayed. Those that appear
to also be supported by your hardware are highlighted in red. 256
color graphics run faster than 16 color graphics and the
resulting files can be compressed more. On the other the
other hand, files generated in 256 color modes are twice as
large as those produced in the 16 color mode of the same
resolution. Thus, for exploration, when you do not intend to
save the generated figures, YABMP Mode 2 ( 640 x 480 x 256 ) is
the preferred mode. The higher resolution SuperVGA modes ( 800 x
600 and 1024 x 768 ) run slower and produce larger files, but
generally do not produce commensurately more attractive figures
on the screen. They are useful mainly for producing figures to
be printed. Select a default graphics mode (Enter 1 or 2). Then
save the selected mode by entering y. You can change your default
Graphics Mode, either permanently or temporarily, from the Options
Menu (Item 1).

In its interactive mode, YABMP is operated from three menus.
First, there is the Main MENU, which comes up when the program is
run. Second, there is the Options Menu, which is Item (5) on
the Main MENU. Finally, there is the Small Menu, which appears
at the top of computed or recalled figures.

You can generally escape from whatever you are doing by pressing
Esc **ONCE**. This will usually return you to the previous menu
or display or to the Main MENU. Pressing Esc will also interrupt
computation and plotting, but this command does not take effect
until YABMP finishes plotting the current row of pixels. You can
also interrupt computation and plotting by pressing Enter. This
allows you to save a partially completed figure, which can be
completed later.

2.1 Getting Started Quickly.

A collection of YABMP script files is provided for generating the
figures referred to in this documentation. To see how a script
file works, enter YABMP &JSETI.CMD. A JSet figure should be
plotted and saved to your current directory as JSETI.BMP.
After YABMP exits, follow the instructions in the following
paragraph to view your figure.

2.2. Viewing an existing figure file. Item (2) of Main MENU.

A list of existing figure files, in the current directory, is
displayed. Select the desired file by entering its number.

Data on the selected file is displayed and this may be printed
with the PrintScrn key.

If the file is an only partially completed figure, you may elect
to finish it. Otherwise, press any key to display the file and a
Small Menu will appear. If key 'c' or 'C' is pressed at this
point to continue, then a command file for making this figure,
named CMD_n.CMD --- where n is a number, is written to your
current directory.

F2 Display just removes the Small Menu. Press any key to restore
the Small Menu.

F4 Zoom produces a box for selecting a subregion of the figure,
to compute and plot. Move the box about with the Cursor keys and
adjust the size of the box with PageUp and PageDown. Using the
cursor and PageUp and Page Down keys on the numeric keypad (with
NumLock set, so the keys are actually the numerals 2, 4, 6, 8, 3,
and 9) adjusts the box more rapidly. Press Enter to select a
region or Esc to return to the small menu. If you select a
region, you will have an opportunity to edit several
parameters. The sequence, from this point, is the same as if
you had selected a subregion of a freshly computed figure and
is described below.

F5 Measure produces a graphics cursor (crosshairs) to read the
true coordinates of a point in a figure. Move it about with the
cursor and PageUp/PageDown keys or the keys on the numeric keypad.
Return to the Small Menu with Esc. Press Enter to compute and
display the period of the point, corresponding to the cursor
location. If the figure is an MSet figure, Press j or J to
make a JSet figure, using the cursor location as c.

F6 Ray draws external rays over the figure.

F7 Done returns to the list of existing figure files. The
directory is not read again, at this point, so any figure
files you have just made will not appear. To see these, Press
Esc, to Return to the Main MENU, and then select (2) View an
Existing File again.

2.3. Making a New MSet Figure. Item (3) of Main MENU.

Begin by entering the parameters on which the computation

The desired region of the plane is specified by the coordinates
of the center of the figure, which are ( x_center, y_center ),
and the height of the figure, which is ymax - ymin. The program
determines the width = xmax - xmin of the region, according to
the aspect-ratio, so that the figure is always automatically
proportioned correctly. See Checking the Aspect Ratio, under
Options Menu below.

Default values of the parameters, for the full MSet Figure, are
given on the data entry screen. To accept a default value, just
Press Enter.

"thickness" is related to the width in pixels of the region
near the boundary (plotted in yellow). If the thickness is too
small, a figure that should be connected may be plotted
disconnected. If the thickness is too large, "holes" in the
figure, that should be plotted in blue, may be filled in as
points near the boundary. Thickness = 0.25 produces a good
figure of the full MSet. Smaller values, down to about
thickness = 0.1, or less, are be required for some high-
magnification details. Recall that the MSet is connected, so a
good MSet figure must look connected. Too small a value of
thickness will disconnect the figure. Too large a value of
thickness will result in fat tendrils and filled-in holes.

"maxiter" is the maximum number of iterations to be made.
maxiter = 110 is sufficient for the full MSet figure and
larger values will not make a significantly better figure.
However, high-magnification details often require 10000 or
more. If maxiter is set too small, many points that will
eventually escape will not yet have escaped. These will be
colored red, as interior points of the set, rather than
yellow as they should be. If increasing maxiter does not
reduce the red area further, then maxiter should be
sufficiently large.

"maxperiod" is the maximum period length checked for points in
the interior of the MSet (i.e., red points). When a stably
periodic point is detected, its distance from the boundary can
be computed and the distance can be used to color an entire
disk, rather than just a single pixel. maxperiod = 10 is
sufficient for the full MSet. In plotting a detail, if you see
many red pixels being plotted one at a time, try raising the
value of maxperiod. But, setting maxperiod too high slows
the program and it cannot do any good with small values of
maxiter. The setting of maxperiod generally has no effect on
the figure produced. The measure function (see F5 on the Small
Menu, below) is provided for determining a suitable value of

"minrecur" is the minimum radius of disks plotted, before
recursion is terminated. minrecur = 1 results in the fastest
plotting and generally produces a satisfactory figure.

After these parameters have been entered, select the desired
Complement Coloring Scheme. The main purpose of this program is
to provide (1) Solid Complement and Solid Interior, and (2)
Distance (disks) Complement and Solid Interior, which result in
the best figures and the shortest computation time. The remaining
schemes are provided mainly for comparison purposes.

"Coloring Scheme". The cleanest and best-looking figures are
made in the shortest time with color scheme (1) Solid
Complement and Solid Interior, which colors the complement
solid dark blue, or with color scheme (2) Distance (disks)
Complement and Solid Interior, which colors the complement in
slightly different shades of dark blue. These choices are
highlighted in red and should normally be used. Several other
familiar color schemes are provided. Color scheme (6) Solid
Complement with Interior by Periods, produces a figure with
the so-called hyperbolic components of the interior colored by
period. For the full MSet, use the script MPERIODS.CMD or set
maxiter = 10000 and maxperiod = 10.

Finally, select the desired palette. (1) YABMP Default Palette
should generally be used. A modified (2) VGA/SVGA Default
Palette is provided for comparison. If a user-defined palette
map has previously been loaded, using (3) Load a Palette File
on the Options Menu, then (3) User-Defined Palette File is

The computation of the figure can be interrupted. Pressing Esc
terminates the computation and returns you to the Main MENU,
discarding the partially completed figure. Pressing Enter
terminates the computation, but allows you to save and use the
partial result. Press Esc **ONLY ONCE** and wait until the
current line is completed.

After the figure is completed, press any key to see the Small

F3 Save asks you for a filename and saves the figure as a file.
If you choose an existing filename, the existing figure file is
not overwritten, but the figure is saved as TMP_???. BMP.

F4 Zoom produces a box for selecting a subregion of the figure,
to compute and plot. Move the box about with the cursor keys
and/or the cursor keys on the numeric keypad. Adjust the size of
the box with PageUp and PageDown and/or with PageUp and Page Down
on the numeric keypad. Press Enter to select a region or Esc to
return to the Small Menu. If you select a region, you will have
an opportunity to edit several parameters. You may want to
decrease thickness and increase maxiter, if the selected region
is small. minrecur = 1 should be retained, unless the figure is
unsatisfactory. maxperiod should be increased if the region
contains many interior (red) points. Use F5 Measure to determine
the correct value.

F5 Measure provides a crosshair to read the true coordinates of a
point in a figure. Move it about with the cursor keys and/or the
cursor keys on the numeric keypad. Return to the Small Menu with
Esc. Press Enter to compute and display the period of a point.
Suppose that you select a region that contains a small imbedded
copy of the MSET and you wish to produce a blow-up in which this
small copy occupies much of the screen. If you do not increase
maxperiod, this small copy may be plotted a single point at a
time. Determine the period of a point in the central cardioid of
the small copy and use 5 times this as your new value of
maxperiod. Press j or J to make a JSet figure, using the
cursor location as c.

F6 Ray draws external rays over the figure.

F7 returns you to the Main MENU.

2.4. Making a New JSet Figure. Item (4) of Main MENU.

A JSET figure is made in essentially the same way as an MSet
figure. Begin by entering the coordinates c_real and c_imag, of
the point c in the complex plane that determines the figure.
After a figure is computed or partially computed, you can use the
Small Menu to select a subregion. The Small Menu works in the
same way as described for MSet figures, above.

2.5. Options Menu. Item (5) of Main MENU.

(1) Select Default Video Mode works in the same way as the
initial selection, when you first run the program, as described
above. You may make the selection permanent, saving it to a
new BMPSCRN.CFG file, or not. You may also use this item to
just view the currently selected video mode, using Esc to
return to the Menu.

(2) Check Aspect-Ratio should enable you to set your screen
controls so that figures are proportioned correctly. You can
also check the aspect-ratio by computing and printing the JSet
figure for c = 0; that is, using c_real = c_imag = 0. This
figure is the unit circle.

By aspect-ratio, we mean the ratio of the width of an object to
its height. The useful part of your screen, a single pixel, and a
rectangle in the complex plane all have aspect ratios and these
combine together to determine the proportions of your figures.

Two displays are provided, as follows:

(1) Computed Unit Circle displays a computed circle inscribed
in a square. Use your screen controls to render the square
accurately square (measure it!).

(2) Raw pixels shows a circle in a square, which is
maxypixels by maxxpixels square. For instance, in VGA 640
x 480 modes, maxypixels = 480 and maxxpixels = 640.

(3) Load a Palette File allows you to select and load a *.PAL
palette file from your current directory.

(4) View Palette permits you to view the palette used for a
given choice of color scheme and palette in the current
default video mode.

(5) Displays this YABMP.DOC documentation file.

(6) Displays version and author information.

(7) Returns to Main MENU.

2.6. Printing an existing figure file. Item (6) of Main MENU.

This works in the same way as Viewing an existing figure file,
but you have to select the printer orientation (portrait or
landscape) and the number of dots per inch. Smaller values of dpi
produce larger figures.

You may elect to send output to the first parallel printer port,
LPT1:, to an H-P *.PCL file, or to an *.HP File. A printer
output file made from File.BMP is named File.PCL or File.HP
and existing duplicate printer output files are overwritten.
Use COPY /B to copy a *.PCL File to a LaserJet (tm) printer
connected to a printer port. *.HP files are intended for
inclusion in documents formatted with the TeX typesetting
system, using the TeX "special" command.

In general, larger values of the parameter "thickness" should be
used for printing than for viewing.

2.7. Command File Processing.
Invoking YABMP with &Filename on the command line (Enter YABMP
&Filename) causes YABMP to read the file and process the commands
it contains. The format of a YABMP command file is as follows:

type M /* type is M or J */

point 0.30239579 -0.02468438 /* c_real c_imag for type J */

loc -0.75 0.0 2.75 /* x_center y_center height */
thick 0.25 /* thickness */
maxi 100 /* maxiter */
maxp 10 /* maxperiod */
minr 1 /* minrecur */
color 2 /* color_scheme */
pal 1 /* palette */
mode 2 /* mode */
name mset /* filename to save, */
/* without extension */

Keywords are written in lower case, with one keyword per line.
No delimiters are used. The color_scheme, palette, and video
mode are specified by their selection numbers on the relevant
Menus. Command files may have any name or extension.

If (3) User-Defined Palette File is desired, the name of a
*.PAL palette file in the current directory must be specified.
The required format is:

pal 3 map NEON.PAL /* palette */

Syntax checking of command files is very primitive, so care
should be taken in preparing them.

A collection of prepared command files, for producing the
figures referred to in this documentation, is provided.

2.8. User-Defined Palette File Structure

A User-Defined Palette File can be used to produce amusing
effects, when Color Scheme (3) Distance (points) Complement
and Solid Interior is selected in a 256 color mode. With other
Color Schemes or 16 color modes, nothing very amusing results.

A YABMP *.PAL Palette File is a 256 line text file. Each line
consists of a triple of integer intensities: b, g, r, in the
order blue, green, red, delimited by two commas. Intensities
may have any value, between 0 and 255, inclusive. Comments may
be included on any line, after a space after the triple, but
each line must begin with the triple. See the included sample
*.PAL files.

Each of the 256 colors is used in a specific way, which is not
user-modifiable, as follows:

color( 0 ) Background color of the blank screen, when
plotting begins. Its default value is 0, 0, 0

color( 1 ) Complement color in Color Schemes 1 and 6.
Its default value is 21, 0, 0 (dark blue).

color( 2 ) Color for points very near the boundary.
Its default value is 0, 155, 255 (bright

color( 3 ) Interior points. Its default value is 0, 0, 255
(bright red).

color( 4 ) to color( 255 ) are used in ways that depend on
Color Scheme and whether the number of colors is 256 or 16.
Here are the formulas used to determine the colors of points
of the complement of the set:

In 256 color modes:

Color Scheme 1 color = 1
Color Scheme 2 color = dist mod 252 + 4
Color Scheme 3 color = dist mod 252 + 4
Color Scheme 4 color = k mod (number of colors - 3) + 3
Color Scheme 5 color = 1 or 4, accordingly as the imaginary
part of the last value of z is positive or
Color Scheme 6 color = 1

In 16 color modes:

Color Scheme 1 color = 1
Color Scheme 2 color = (dist/16) mod 12 + 4
Color Scheme 3 color = (dist/16) mod 12 + 4
Color Scheme 4 color = k mod (number of colors - 3) + 3
Color Scheme 5 color = 1 or 4, accordingly as the imaginary
part of the last value of z is positive or
Color Scheme 6 color = 1

Here, dist is the distance in pixels from the point being
computed to the boundary of the set. k is the number of
iterations before escape.

Part 3. A Bit of Mathematics, History, and Computer Graphics

To produce the most interesting mathematically correct figures,
the user needs to know a bit about the underlying mathematics.

3.1 The Fatou and Julia Sets of a Complex Function

We begin by considering a simple example. Let the function f,
from the complex plane to the complex plane, be defined by f(z) =
zý; that is, if z = x + iúy, then f(z) = (xý - yý) + iú(2xy).

First suppose that z is inside the unit circle; i.e., xý + yý <
1. Then the iterates of f; that is, f(z), f(f(z)), f(f(f(z))),
... converge uniformly to the zero function.

Next suppose that z is outside the unit circle; i.e., xý + yý >
1. Then the iterates of z converge to infinity or, to be more
precise, to the function that maps each point to infinity. Each
such point, either inside or outside the unit circle, has a
neighborhood on which the iterates of f form a normal family and
all such points comprise the Fatou Set of f. The Julia set of f
is the complement of the Fatou Set which, in this case, is just
the unit circle.

To get YABMP to show you this Julia Set figure, first Select (4)
Compute and Plot New JSet from the Main MENU. Then enter c_real =
0, c_imag = 0 (so that the function is f(z) = zý + 0), thickness
= 1.5, maxiter = 50, Coloring Scheme = 1, and Palette = 1. What
you will see is a yellow circle, with red interior and blue
exterior. The red points converge to 0, while the blue points
"converge to infinity." The Julia Set is the circle, while all
the red and blue points belong to the Fatou Set.

The formal definition, of the Fatou and Julia sets, is abstract
and difficult: If a point z has a neighborhood U, such that the
sequence of the iterates of f restricted to U form a normal
family, then the point z is said to belong to the Fatou Set of f.
Otherwise, if no such neighborhood exists, z is said to belong to
the Julia Set, J(f), of f. In our example, the Julia Set is
precisely the unit circle, but it is impossible to plot a really
clean circle because the points of the circle do not exactly
coincide with pixel centers.

About 1906, Pierre Fatou made an astonishing discovery,
concerning the rational function f(z) = zý/(zý + 1). Fatou found
that almost every point z converges to zero, under the iteration
of f. However, there remained an exceptional set of points that
remain bounded away from zero, namely the Julia set of f. After
the first world war Fatou, Gaston Julia and others took up the
theoretical study of this phenomenon and obtained many
interesting results. For instance, Fatou was able to prove that
the Julia Set of his rational function is a Cantor Set. However,
in the absence of machine computation, it was impossible to
compute and plot figures.

Some time before June 1978, Robert Brooks and J. Peter Matelski,
then Assistant Professors of Mathematics at the State University
of New York at Stony Brook, made some of the first machine
computed and plotted such figures (see References [1] and [6]).
They studied the function

(1) f(z) = zý + c

and made a number of computer plots, two of which are reproduced
in [1]. Fig. 1 of [1] shows the JSet for c = 0.1 + iú0.6, which
they defined as the set of points z which have a stable periodic
orbit under the mapping (1). Fig. 2 of [1] is the first full
MSet figure. They defined the MSet as the set of points c, which
have a stable periodic orbit under the mapping (1).

Brooks' and Matelski's figures were necessarily crude, since the
only output device at their disposal was a line printer. Their
figures consisted of asterisks printed on green striped paper.

Some time later, Benoit Mandelbrot, working at IBM with much
better equipment, made much higher resolution computer pictures
which, however, were mathematically incorrect. Mandelbrot thought
and his figures showed that his set, which he called Q, consists
of many well separated components or islands.

In 1982, Douady and Hubbard (see Reference [2]) defined the MSet
to be the set of parameter values c, for which the map (1) has a
bounded critical orbit or, equivalently, for which the map has a
connected Julia Set. They proved that the MSet is connected and
that the complement of the MSet is connected, thus providing a
sound mathematical basis for the further study of the MSet and of
the JSets of (1).

3.2 Computer Graphics

The most obvious way to attempt to compute and plot a figure of
the MSet is to attempt to do it directly from its definition. To
do this, we start with a point c, that corresponds to the center
of a pixel on the screen. Beginning with z = 0, we just iterate
z = zý + c until either (i) the modulus of z exceeds some large
number M or (ii) a certain large number maxiter of iterations has
been performed. In Case (i), the iterates are evidently diverging
to infinity, so we can confidently color the pixel to indicate
that it is an element of the complement of the MSet. In case
(ii), where the modulus of the iterates has remained small after
maxiter iterations have been performed, all we really know is
that the iterates are not (yet) diverging to infinity.

Different colors, related to the number of iterations performed
before z escaped from the disk of radius M, are often used to
produce a more colorful figure. In Case (ii), when maxiter
iterations have been performed without z escaping from the disk
of radius M, we color the pixel to indicate that the point
belongs to the MSet. That is, we assume that it will never
escape. Note that the point c scans the screen, while z always
starts from zero.

To produce a JSet figure, we select a complex number c, which
remains fixed for the figure, and we speak of the JSet of the
complex number c. We start with a point z, that corresponds to
the center of a pixel on the screen. Then, we just iterate
z = zý + c until either (i) the modulus of z exceeds some large
number M or (ii) a certain large number maxiter of iterations has
been performed and color the pixel accordingly. Note that here, c
is fixed and z scans the screen.

This na‹ve method suffices to produce crude figures, of the kind
usually made by available programs, but it cannot produce a
mathematically accurate sharp figure. There are two reasons for
this. First of all, many points of JSets and many points near
the boundary of the MSet take a very large number of iterations
to escape. So, unless the maximum number of iterations is very
large some points will be colored incorrectly. But there is a
second, much more subtle reason why this method cannot produce
accurate sharp figures. The boundaries of the MSet and of the
JSets are extremely diaphanous. They are composed of many fine
filaments, separated by mostly empty space or "holes," rather
like lace. It is easily possible that, in scanning the screen,
all of the points corresponding to the centers of pixels will
fall in the "holes."

Let us try to understand this better, with the aid of the
"Spiral" figure of the file MSHVL4.BMP. In VGA 640x480 mode, this
figure consists of 41,935 pixels (of the 307,200 pixels on the
entire screen), every one of which is actually diverging to
infinity. Thus, every pixel center in this figure falls in a hole
in the lace. Nevertheless, this region of the plane contains
infinitely many interior points of the MSet and, in fact,
infinitely many small imbedded copies of the MSet, itself.
Successive further magnifications, of a detail in this figure,
yields figures that look like MSHVL1, MSHVL2, and MSHVL3.

It is this second fact that prevented early computer figures from
being correct (See References [5], [6]), and [8]. In fact, the
production of realistic figures had to await the discovery of the
Distance Estimate Formula (See Reference [5]), by William
Thurston. Thurston's formula yields an estimate of the
distance from the center of a pixel to the boundary of the
set. The Distance Estimate Method involves the iteration of
both the function and its derivative(s) until either (i) a
good distance estimate can be made, (ii) the iterates escape,
or (iii) a certain maxiter number of iterations has been made.

YABMP uses Thurston's Distance Estimate Formula in the following
way. If the distance from a pixel to the boundary of the set is
very small, say a pixel side or so, the pixel is colored bright
yellow to indicate that the pixel is "near the boundary." If a
pixel is inside the set, it is colored bright red. Additionally,
for MSet figures, an attempt is made to estimate the distance
from the pixel, corresponding to an interior point of the set, to
the boundary and this is used to color a disk red. If a pixel is
found to lie outside the set, it is colored according to one of
six selectable Complement Coloring Schemes. With Scheme 1,
Solid, the distance estimate is used to color a solid disc
consisting entirely of blue points that are escaping to infinity.
This yields the best run-time performance and, also, the most
mathematically realistic figures. There are, after all, only two
kinds of points: those that belong to the set and those that
belong to its complement. Consequently, only two colors should be
needed. However, by distinguishing between the yellow points near
the boundary and the red interior points of the set, we can print
good monochrome figures by printing the yellow points.

The implementation of the Distance Estimate Method, used by
YABMP, is an adaptation of the recursive algorithm of Juval
Fisher, given by him in his paper "Exploring the Mandelbrot
Set," see [4], pp. 287-296.

The MSet iteration process is always started with the initial
value z = 0. The function f(z) = zý + c has exactly one
critical point at z = 0 (where the derivative f'(z) = 2úz is
zero). Consequently, if we know what happens in the neighbor-
hood of z = 0, we know what happens everywhere and, therefore,
nothing further is to be learned by making figures with non-zero
initial values of z.


[1] Robert Brooks and J. Peter Matelski, "The Dynamics of
2-generator subgroups of PSL(2,C)," pp. 65-71, in "Riemann
Surfaces and Related Topics: Proceedings of the 1978 Stony Brook
Conference" (Irwin Kra and Bernard Maskit, Eds.), Annals of
Math. Studies vol. 97, Princeton University Press, 1981.
Contains the first figure of the MSet and the JSet figure for
c = 0.1 + 0.6úi.

[2] Adrien Duady et John Hamal Hubbard, "It‚ration des polyn“mes
quadratique complexes," C. R. Acad. Sc. Paris, S‚rie I, t. 294
(18 janvier 1982), pp. 123-126.

[3] H.-O. Peitgen, P. H. Richter, et al., "The Beauty of
Fractals," Springer Verlag, 1986. Contains many good colored
figures, including interesting details of the MSet and their
locations (coordinates).

[4] H.-O. Peitgen, Dietmar Saupe, et al., "The Science of Fractal
Images," Springer Verlag, 1988. Contains more good figures,
mathematical exposition, and pseudo-code for computational

[5] John Milnor, "Self-Similarity and Hairiness in the Mandelbrot
Set," pp. 211-257 of "Computers in Geometry and Topology", Edited
by Tangora, Lecture Notes in Pure and Applied Mathematics, vol.
114, Marcel Dekker Inc., 1989. Contains the derivation of the
Thurston Distance Estimate Formula, many good technical
references, and some very interesting figures.

[6] Steven G. Krantz, "Fractal Geometry," pp. 12-19, The
Mathematical Intelligencer, vol. 11, No. 4, 1989 (Springer
Verlag). An interesting book review of [3] and [4], above. See
also the letters to the editor, from Robert Brooks and Benoit
Mandelbrot, in the following issue of The Mathematical
Intelligencer, vol. 11, No. 5, 1989 (Springer Verlag).

[7] John Horgan, "Mandelbrot Set-To --- Did the father of
fractals 'discover' his namesake set?", Scientific American,
April 1990, pp. 30-34.

[8] John Milnor, "Dynamics in One Complex Variable: Introductory
Lectures", April 1990, SUNY Stony Brook, Institute for
Mathematical Sciences, Preprint # 1990/5. Elegant exposition,
with some outstanding figures and a fine treatment of the
problems of computer graphics.

Copyright, Disclaimer, Licenses, and All That Stuff

The author of YABMP disclaims all warranties, either express or
implied, and makes no claim as to the suitability of this
software for any purpose. In no event shall either he or his
Institution be liable for any damages whatsoever.

You may freely make copies of YABMP and give them to others,
subject only to the condition that they be accompanied by the
full documentation.

The author would appreciate your comments, suggestions, and bug
reports. He can be reached at:

Prof. Eugene Zaustinsky
Department of Mathematics
State University of New York
Stony Brook, New York 11794-3561

email: [email protected]

  3 Responses to “Category : Printer + Display Graphics
Archive   : YABMP097.ZIP
Filename : YABMP.DOC

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: