# Category : Printer + Display Graphics

Archive : YABMP097.ZIP

Filename : YABMP.DOC

( 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

provided.

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

produces.

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

directory.

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

subdirectory.

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

depends.

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

maxperiod.

"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

available.

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

Menu:

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

(black).

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

yellow).

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

negative.

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

negative.

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 nave 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.

REFERENCES

----------

[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, "Itration des polynmes

quadratique complexes," C. R. Acad. Sc. Paris, Srie 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

algorithms.

[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]

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

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

But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/