Fractals Show 2  Lab Report 
NOTE: This program
requires additional validation tests, Other items to be addressed include: 1. Revalidation of complex number
routines 2. Fix data entry for floats (esp. negative values) 3. Fix localization to
treat DecimalSeparator correctly 4. Fix aspect ratio problems in certain "Quick Settings" 5. Allow printing of fractal images 6. Save/Restore iteration map for
coloring independently 
"Intermingle" Images from Fractals Show 2 Program 
Purpose
The purpose of this project is to create Mandelbrot and
Julia sets for a number of complex math functions.
Mathematical Background
The famous Mandelbrot Set is formed by the iteration
z z^{2} + c
over an area of the complex plane. A Julia Set is formed using a similar iteration. But instead of iterating only with the function z^{2}, many other complex math function can be explored. Here's a summary of how to create a Mandelbrot or Julia Set:
At the Point (x,y):  Mandelbrot Set  Julia Set 
Initial Condition  z_{0} = 0 + i0  z_{0} = x + iy 
Constant  c = x + iy  c = p + iq where p and q are any real values 
Iteration  z_{n+1} = fn[ z_{n} ] + C 

Termination Conditions 

The complex functions, fn, that are used in Fractals Show 2 include: z^{2}, z^{n}, z^{x}, z^{z}, exp(z), cos(z), sin(z), cosh(z), sinh(z), I0(z), J0(z), tan(z), tanh(z), sec(z), sech(z), csc(z), csch(z), cot(z), coth(z), gamma(z). See the Complex Math page for mathematical details.
Points where the iteration count reaches the maximum specified limit are "captured" points and are usually colored a single color. The other points that exceed a specified value "escape" to infinity and are colored in a way that reflects the number of iterations at the time the specified value was exceeded. Many different color schemes can be explored.
This program attempts to make the counting of iterations a separate process from the coloring of the iterations.
<Add comments and examples of FractInt misoptimization and redefinition of standard math terms>
Materials and Equipment
Software Requirements
Windows 98
Delphi 4.02/5 (to recompile)
FractalsShow2.EXEHardware Requirements
VGA display with 640by480 screen in high/true color display mode
Procedure
Choose the three "Quick Settings" selections, or individually specify the x and y min and max, number of pixels in each dimension, the number of iterations, the name, and the function parameters.
Here is a summary of the various Groups that may be chosen:
Group Description Number of Parameter Sets Beauty of Fractals: Mandelbrot Images from the book
The Beauty of Fractals14 Beauty of Fractals: Julia 16 Mandelbrot Evolution Mandelbrot Sequence
z z^{x} + c, for x34 MiniMandelbrot Bifurcation In the Mandelbrot Evolution, near x=2, a "MiniMandelbrot" can be seen to bifurcate (split). 34 Mandelbrot "UFO" In the Mandelbrot Evolution, near x=3.89, a "UFO" can be seen to "fly" briefly. 19 efg's Mandelbrot Gallery A variety of fractal images originally displayed in efg's Fractal Discovery Lab Gallery. 28 efg's Julia Gallery 34
Press the Start button (where the Continue button is above). Interrupt/continue the computation any number of times.
This "Integer" image was an experiment to see if raw binary data might make sense without any special coloring. Each pixel is an integer in the range 0..MaxIterationCount. But each integer is treated as the color $00rrggbb, so often the blue pixels show up since iteration limits are often in the range from 256..1024.
A further experiment using pf15bit bitmaps, where each pixel is a "word," might also be interesting.
This step was introduced so the counting of iterations was a distinctly separate process from coloring of iterations. Often fractal programs combine both of these operations in one step. However, this makes recoloring of images difficult when more than one iteration value is mapped to the same color.
Click on any of the color boxes above to change the box color using the standard color dialog. This provides for a wide variety of color gradient combinations.
"Captured" and "Escape" colors are established via the selections above. The "Color Shift" spin box on the Final Image tab also affects the color mapping.
The Color Scheme for the Reverse Gradient with a Shift of 645 appears like this:
This is the color scheme used for the Final Image tab shown below.
The Rainbow color scheme looks like this:
Computation of the "rainbow" colors are explained in more detail in the Spectra Lab Report.
Either the Gradient or the Rainbow can be broken in to a specified number of intervals by checking the Color Bands box. For example, specifying 5 steps yields the following color gradient:
Checking the "Rotate" box rotates the above colors:
A wide variety of color schemes is possible.
The following shows the biomorph "Final Image" using the reverse gradient with a shift of 645:
Cliff Pickover put a similar image in his book
Mazes for
the Mind: Computers and the Unexpected,
St. Martin's Press, 1992.
Color plate before page 173.
Press the Save button to store the image in a pf24bit BMP or a JPG.
Press the Color Shift spin box to gradually "rotate" gradient or rainbow colors.
Discussion
(Outline for now)
ScreenFractalsShow2 unit and form:
 IterationCallback
 ResetStartPixel Procedure
 TimerDisplayTimer Procedure with elapsed and estimated completion time
 Keystroke validation: EditFloatKeyPress, EditIntegerPress, EditSequencePress
 Range validation: EditLimitsChange, EditPixelsChange, EditIterationsChange
 Start/Pause/Reset Procedures (BitBtnStartClick/BitBtnPauseClick/BitBtnResetClick)
 csOwnerDrawFixed style ComboBox with "hidden" parameters
 UpdateColorScheme
 storing integers as "pixels" in pf32bit bitmap; displaying integer value with
ImageMouseMove
 handling MouseMove events when TImage is stretched
 saving BMP or JPG file (need to provide way to specify JPEG quality)
 ShellExecute to link to web site
MandelbrotJuliaLibrary unit (separates computations from user interface):
 CZN, CZX, CZZ complex functions
 FunctionNameIndex
 TMandelbrotJuliaMap Class with methods ComputeMandelbrot, ComputeJulia,
SetColorScheme, ColorLambdaBitmap, ...
ComplexMathLibrary unit
 complex arithmetic functions using either rectangular or polar coordinates
 complex trig and transcendental functions
SpectraLibrary unit:
 Rainbow Function
 WavelengthToRGB Function (overloaded)
 ColorToRGBTriple Function
Conclusions
Exploring fractals is an excellent way to experiment with mathematics
while using computer graphics to display results.
Keywords
Fractals, Chaos, Mandelbrot Set, Julia Set, Biomorph, Rainbow,
WavelengthToRGB,
pf32bit, complex math, Delphi
Download
Delphi 4.02/5 Source and EXE: FractalsShow2.ZIP
(295 KB)
Turbo Pascal Programs. Note: If you have a fast machine (233 MHz Pentium II or faster), you'll likely need a patch to run these TP 7 programs. See this fix for "Runtime Error 200."
Fractals and Show (original programs). Shown below is the fractal "66" Julia Set z z^{z} + (1.7 + 1.4i) created with the "Fractals" program and displayed with the "Show" program. TP Source and EXE: FracShow.ZIP
Biomorph. While searching the Mandelbrot "Shoreline" of z z^{1.5} + C, a fascinating fractal biomorph was discovered for the Julia Set z z^{1.5}  0.2. TP 7 Source and EXE: Biomorph.ZIP
Future
Many additional features could be added to this project:
Add FormResize handler.
Setup Tab
Raw Image Tab
Allow way to save/restore pf32bit image with integer values to a file.
Color Scheme Tab
Provide additional color map options.
Final Image Tab
Save a .DAT file along with the .BMP or .JPG to retain all parameters and color setting information about an image.
Glynn Function Study Center Gallery
Links: Fractals and Chaos Section of efg's Mathematics Reference page
Other Links about Fractals An Introduction to Fractals Fractal World What Is a Fractal? Fractals Fractal  Mandelbrot Set for F(Z)=Z*Z + C 
Updated  11 Jul 2009 
Since  16 Apr 2000 