Press the "Draw" button, and a Mandelbrot set will be drawn. The
image is put into the image list panel on the right side:

Fig. A3: Image button in the image list panel
|
6. Zoom
into the Mandelbrot set
Click the "Zoom" button in the tool bar. A zoom rectangle will
appear which can be moved with the mouse or the cursor keys. Its
size can be adjusted with the mouse wheel or the "+" and the "-"
keys. Give the rectangle a size a little smaller than the
window, place it into the middle of the window and press the
left mouse button or the return key.
Fig. A4: Zoom into the Mandelbrot set
The Mandelbrot set is recalculated. Repeat these steps several
times; each image is put into the image list. Be sure that the
"New" button remains pressed while you zoom into the plane
(otherwise the actual image is replaced rather than a new one
created). You can leave the zoom mode by pressing the "Zoom"
button again or by clicking with the right mouse button.
7. Play the Clip

Fig. A5: Playing a clip
|
When you have some images in the image list press the
"Play" button in the image button panel. All images
calculated so far will be replayed in the actual window.
Click the "Endless" check box and play the clip again.
Now it will be played endless forth and back.
Click the "Cycle" check box additionally, and the clip
is cycled instead. The clip is played till the "Stop"
button is pressed.
Type "1000" into the "Delay" field and play the clip
again. Now there will be a delay of one second between
each image.
|
8. Draw Julia Sets
Picking c-Values
Click menu item "File/New Julia Image" and press the "Draw"
button again (compare
Fig. A1).
Place the two windows side by side and activate the Mandelbrot
window by clicking its title bar. Click the "Pick" button, move
the mouse into the Mandelbrot window and click somewhere. Doing
this you pick the complex value beneath the mouse pointer, and a
new Julia set based on this value will be generated. Repeat this
several times.

Fig. A6: Drawing Julia sets and picking c-values
You can see that the shape of a Julia image depends on the
c-value. See
chapter C for
details.
9. Remove all Images/Load a Clip
Fig. A7: Removing
all images
|
Click the "Clear"
button in the image control panel. All images will
be removed from the image panel and the memory.
Click menu item "File/Open Clip ...". A file
select dialog will appear. Navigate to the example
folder in the FCM directory and load the clip
mandel1.clp. Loading will take a while because all
pictures have to be recalculated. Press the "Play"
button to play the clip and the "Stop" button to
stop it.
|
Fig. A8: Loading a
clip
|
B. FCM in Detail
1. The Main Window
Fig. B1 shows FCM's main window:

Fig. B1: Main window
You see a common MDI application (multi document interface) with
a desktop and several windows on it, a menu bar, a tool bar, a
status panel and on the right side a list with image buttons and
some control buttons. These elements and all dialog boxes are
described in the following sections.
2. The Menu Bar
The menu bar holds all menus available in FCM.

Fig. B2: The menu bar
a) The File Menu
The file menu holds all menu items concerning file handling,
printing, preferences and lets you exit FCM with saving the
preferences.
File Menu
|
Menu Item
|
Description
|

|
New Mandelbrot
Image |
Opens a new empty window to draw a
Mandelbrot set. |
New Julia Image |
Opens a new empty window to draw a Julia
set. |
Open Image ...
|
Opens a file dialog for selecting a fractal
image to be loaded from disk.
Between other data the image's pixel size is stored in
the file. This size will be restored if there is no
empty window open. If there is an empty window open you
can let adjust the image size to the size of the window.
(But, this works only if the image has not been stored
with activated menu item "Save with Colors Array".)
|
Save Image |
Saves the actual image to disk. This item is
enabled only if the image has been saved already and has
a name therefore.
|
Save Image As ...
|
Saves the actual image to disk. A file
dialog is opened to select a name.
|
Export Image As ...
|
Saves the actual image in the PNG (Portable
Network Graphics), BMP (Windows OS/2 Bitmap)
or JPG (Joint Photographic Experts Group) format. A file
dialog is opened to select a name. The format depends on
the extension (".png", ".bmp" or ".jpg") you give the
file.
|
Export Selected Images As ...
|
The same as menu item "Export Image
As ..." but all selected
images in the list are saved. The file name will be
automatically expanded by a number between "0000" and
"9999" for each image. If your file name is
"test0234.png" e. g. the numbers will start with
"0234".
|
Export All Images
As ... |
The same as menu item "Export Selected
Images As ..." but all images in the list are
saved. |
Encode Exported Images to Video ...
|
Opens a dialog to transform exported images
into a MPEG or AVI file. See section B.11 for details.
|
Open Clip ...
|
Opens a file dialog for selecting a clip to
be loaded from disk. The images are inserted into the
image list above the currently activated image.
The clip's pixel size is treated in the same way as the
opening of an image: You can let adjust the size to a
currently open window.
|
Open Clip But Export Each Image As ...
|
Opens a first file dialog for selecting a
clip and then a second one for entering the file name of
the first image to export.
After calculating each image it will be exported
immediately and removed from the image list to get the
memory free again. So this is a combination of the menu
items "Open Clip ..." and "Export All Images
As ..." without holding the images in the image
list.
For an explanation see section B.11.e).
|
Save Selected Images As Clip ...
|
Saves all selected
images to disk. A file dialog is opened to select a
name. |
Save All Images As Clip ... |
The same as menu item "Save Selected Images
As Clip ..." but all
images in the list will be saved.
|
Save with Colors Array
|
This is a toggle item which effects the way
an image is saved: If active an image is stored with its
colors array, if not only its parameters (borders, color
settings etc.) are stored (see section B.12). In the second
case the files are much smaller, but the colors array
has to be recalculated after loading. If your computer
is slow or the images are really big you should activate
the item.
The item controls also the saving of clips. Be aware
that clip files will be really big if this item is
checked!
|
Page Setup ...
|
Shows your printer's configuration dialog.
|
Print ... |
Shows your printer's printing dialog.
|
Preferences ...
|
Opens the Preferences dialog box. It is
described in chapter B.7. |
Restart FCM
|
Restarts the application. This is necessary
if you've chosen a new language setting.
|
Exit
|
Leaves the application and saves besides the
"preferences" some other parameters as the main window's
position and size. These
data is not saved if the program is exited by the
window closer in the upper right corner.
|
Table B1: File menu items
b) The Edit Menu
With the edit menu you can manipulate the image list. Single
or multiple images can be selected using the Ctrl- or
Shift-Keys like files in the Windows Explorer, see section
B.4.
Attention: FCM is not able yet to handle the system's
clipboard; it is not possible therefore to copy and paste
images into other applications.
Edit Menu
|
Menu Item
|
Description
|

|
Cut Selection
|
Removes the selected images
from the list and copies them to the buffer.
|
Copy Selection
|
Copies the selected images into
the buffer.
|
Paste Copied Images
|
Pastes the images in the buffer
into the image list above the topmost selected
image.
|
Paste Copied Images Reversed
|
Pastes the images in the buffer
into the image list above the topmost selected
image, but revertes the sequence before doing it.
|
Delete Selection
|
Deletes the selected images
from the list.
|
Delete All ...
|
Deletes all images from the
list and the start- and end-image for animations
(the last is not done by the "Clear" button in the
image control panel).
|
Remove Key Frame Flag
|
After creation of an animation
the images between the transition was calculated are
so called key frames; they are marked with a red
triangle. This menu item removes the key frame
property.
|
Select All
|
Selects all images in the list.
|
Select Copies
|
Selects these images again
which are actually in the buffer. Useful for
restoring a selection.
|
Select Key Frames
|
Selects all so called key
frames which are built while creating an animation.
|
Invert Selection
|
Selects all images not selected
at the moment and vice versa.
|
Goto Next Image
|
Selects and activates the next
image in the list. All other images are deselected.
|
Goto Previous Image
|
Selects and activates the
previous image in the list. All other images are
deselected. |
Goto Next Selected Image
|
Activates the next selected
image in the list. The selection remains unchanged.
|
Goto Previous Selected Image
|
Activates the previous selected
image in the list. The selection remains unchanged. |
Go To Next Key Frame
|
Activates the next key frame in
the list. The selection remains unchanged. |
Go To Previous Key Frame |
Activates the previous key
frame in the list. The selection remains unchanged. |
Goto Image ...
|
A dialog pops up to enter an
image no. When leaving it with OK this image will be
activated. A selection remains unchanged but this
image will be added to the selection.
|
Table B2: Edit menu items
c) The Animation Menu
The animation menu holds all menu items for creating
animations automatically. See section
B.10
for details creating animations.
Animation Menu
|
Menu Item |
Description |
 |
Parameters
...
|
Opens the Animation
Parameters dialog box. It is described in chapter B.10.
|
Adjust Frame Rate ...
|
If you want to create
an AVI file out of an animation (see section B.11.)
you have to set how many images per second the video
should have. If you change the frame rate, the
number of pictures between to key frames have to
change also, of course. (At least if the time
distance between the key frames should remain the
same.) Here you can adjust the frame rate of all
selected key frames to the value that is placed in
the Video
Creation Dialog.
More precisely: The number of images between the
selected key frames will be recalculated in a way,
that the time difference between them remains the
same, but the new frame rate can be used when
creating an AVI file.
|
Calculate Animation
|
Calculates a smooth
transition between all selected images. See section
B.10 for
details.
|
Table B3: Animation menu
items
d) The Help Menu
The help menu lets you access the manual and shows version
infos.
Help Menu
|
Menu
Item |
Description |
 |
Contents
|
Opens the manual page in
your web browser. In Windows your registry is scanned to
detect your default browser, in Linux Firefox is used.
These settings can be changed in the preferences dialog
box, see section B.7.
|
About
|
Opens the about dialog
box with version infos, the license and some system
properties. |
Table B4: Help menu items
3. The Tool Bar

Fig. B3: The tool bar
The most important functions you can execute with the buttons in
the tool bar.
Button
|
Description
|
Draw
|
Draws a fractal image
into the actual window using the actual settings. |
Zoom
|
Opens a zoom rectangle
which marks a cutting in the actual window. There are
the following commands:
- Mouse move or cursor keys: Moving of the cutting.
- Left mouse button or Return: Activating and
drawing the cutting.
- Mouse wheel or "+"- and "-"-key: Change the
rectangle's size.
- Middle mouse button or "0"-key: Sets the
rectangle to the same size as the window is; this
may be used for moving the plane rather than
zooming.
- Right mouse button or ESC: Leaving the zoom mode.
|
Pick
|
This item is only enabled
if at least one Julia window is open and a Julia image
is drawn in it. A click with the left mouse button picks
up the complex value beneath the mouse pointer and draws
a new Julia set using this value as "c"-parameter
immediately. If your active window holds a Mandelbrot
set the Julia set is drawn into the last active Julia
window. The commands are nearly the same as above:
- Mouse move or cursor keys: Moves the cursor.
- Left mouse button or return: Chooses the value and
draws a new image.
- Right mouse button or ESC: Leaves the pick mode.
|
Data
|
Opens the Geometry dialog
box. It is described in section B.8. |
Colors
|
Opens the Colors dialog
box. It is described in chapter B.9. |
Table B5: Tool bar items
4. The Image
Button Panel

Fig. B4:
The image list
|
The image button panel
shows all images calculated so far. You can think of the
image list as a stack: The oldest image is at the
bottom, a new image is put on top of it.
The image indicator at the bottom shows how many images
are in memory and which of them is activated (in the
example on the left 18 pictures are in memory and the
16. is activated).
Single or multiple images can be selected like files in
the Windows Explorer [see also section B.2.b)]:
- A single image is selected by clicking it with the
mouse.
- A second image is selected by clicking it with the
mouse and holding down the Ctrl key.
- Multiple images are selected with the mouse while
holding down the Shift key.
While the "New" button is selected, drawing an image
results in a new image. If the "New" button is not
selected the actual image is replaced by the drawn image
instead.
When animations are created so called key frames arise.
These are marked with a red triangle in the upper left
corner.
|
5. Image Controls
With the image control buttons you can scroll through the images
in memory, move them up and down, delete and copy them.
Furthermore the images can be played as a clip.
Panel
|
Control
Element
|
Description
|
 |
Next
|
The next image is
displayed. (Shortcut "D".)
|
Prev
|
The previous image is
displayed. (Shortcut "C".) |
Up
|
The actual selection is
moved up one position.
|
Down
|
The actual selection is
moved down one position.
|
Del
|
The actual selection is
deleted from the list (and memory).
|
Clear
|
Removes all images from
the list and the memory.
|
Play
|
The actual selection is
played as a clip. If only one image is selected all
images are played beginning with the selected one.
Attention: Since the colors are recalculated when
displaying an image, and this procedure needs time, your
images should not be too large to achieve a high frame
rate.
|
Stop |
With this button all long
enduring operations can be interrupted. E. g.
playing a clip, loading a clip, drawing an image. |
Cycle
|
If this check box is
checked a clip is cycled, i. e. the first image is
displayed again after the last or vice versa. The
direction is determined by the direction the clip is
actually running when you check the box.
|
Endless
|
If this check box is
checked the clip is played endless forth and back. If
the "Cycle" check box is checked additionally the images
are cycled.
|
Delay/ms
|
This element is used to
set a time delay between two images when playing a clip.
For smooth animations set it to 0, if you want to
display a slide show you may set it to 2000 e. g. to
display the next picture after 2 seconds.
|
Table B6: Image control elements
6. The Status
Panel
The status panel shows the most important parameters of an
image. The leftmost four entries show the borders of your image,
i. e. the borders of the complex plane your image is painted
into. Because a Mandelbrot set shows the c-plane they are
labeled with "crMin" etc. A Julia set shows the z-plane,
therefore the labels are "zrMin" etc.

Fig. B5: Status panel (Mandelbrot set)

Fig. B6: Status panel (Julia set)
Also you can see the actual mouse pointer's coordinates and the
number of iterations the iteration process has needed to
calculate the color of that point. These data is displayed in
the rightmost three fields.
Julia sets show additionally the value of the constant c in the
fields "cr" and "ci" used for calculating that image.
7. The
Preferences Dialog
This dialog can be reached with menu item
"File/Preferences ...".
Fig. B5: Preferences dialog
a) Section
"Help Browser"
In this section you can adjust the help browser path. If the
check box "Use Default Browser" is checked, and FCM is running
under Windows, your registry is checked for your default
browser; under Linux Firefox is used. If this does not work or
you want to use another HTML browser you can choose your
favourite one with the "Search" button.
b) Section
"Language"
For the time being you can use FCM with two languages, English
and German. Since all texts are to be reread in case of a
language change, FCM has to be restarted with "File/Restart FCM"
to take effect.
With the setting "Default" FCM starts in the language of your
desktop.You can override this default language by starting FCM
from a command line with
java
-jar -Duser.language=de -Duser.country=DE FCM.jar
or
java
-jar -Duser.language=en -Duser.country=GB FCM.jar
c) Section
"Skin"
In the third section the skin (look and feel) of the application
can be adjusted. FCM's layout is optimized for the MS Windows
skin, the layout is rather poor with Motif. Unfortunately the MS
Windows skin is not available in the Linux version of the Java
Runtime Environment.
The list of skins is generated dynamically by retrieving the
installed Java look-and-feels.
d) Section "Others"
In the last section you can adjust these settings:
- Downscale
Image
When Exporting:
If another value than 100 % is given in the drop down list
FCM downscales an image to the given value when exporting (=
saving as PNG-, BMP- or JPG file). In case of a 50 % value
an image is only half as wide e. g. You can see a
preview when clicking your image (to set the focus to its
window) and pressing the key "1" on your keyboard.
What is it good for? With downscaling you can improve the
image quality dramatically, when creating an image much
bigger then wanted at first (e. g. 1600 x 1200 Pixel)
and saving it then in the wanted size, e. g.
downscaling it to 25 %, i. e. to 400 x 300 Pixel. This
parallels an anti-aliasing process and smoothes edges. See
also the section about supersampling in B.8.a) and the example in B.13.
- Max. Memory for VM:
As shown in chapter A.4. you
can tell the Java Virtual Machine how many memory it may
allocate at the most. To save the user from manipulating the
command line you can do this here. But, the setting will
work only if FCM is restarted with menu item "File/Restart
FCM", because only then FCM can generate its own command
line to start the second instance! (If you select a value
greater then your main memory the restart will fail without
any comment; the 32 bit JRE allows only up to about 1500 MB
as well.) Starting FCM by double click on "FCM.jar" or
"fcm.exe" will start the VM with the default value of only
64 MB (with 1 GB RAM in the system); the setting here will
have no effect then.
It is in fact rather bothering to have to start FCM twice.
If you need more memory regularly you should better adjust
your "startFCM.bat" and start FCM by double clicking this
file.
(If someone knows how to adjust the memory setting at
runtime, let me know. I even could not figure out how to
obtain the amount of built-in memory with Java.)
- Show Memory Usage:
If this check box is activated, in the lower right corner of
the program window the VM's memory usage is displayed and
will be updated when an image is created or deleted.
- Show Tooltips:
If this box is checked short help texts are shown for a
control element when the mouse rests over it.
- Preserve Zoom Rectangle:
When zooming into the plane it is quite interesting to see
which cutting is to be seen in the next image. The zoom
rectangle will be preserved if the check box "Preserve Zoom
Rectangle" is activated. The "New" button in the image panel
must be pressed additionally.
The zoom rectangle is only stored to file if menu item
"File/Save with Colors Array" is activated.
- Confirm Closing FCM:
If checked you will be prompted with a message box when
leaving FCM, and you can abort the operation.
- Play Sound After
Operation:
FCM plays the file "sound.wav" in the installation directory
after longer operations like drawing an image or creating a
clip if this box is checked. If you'd like another sound
replace the file by your favourite one.
The options are saved to the file fcm.ini in your home directory
only when leaving FCM with the "File/Exit" or "File/Restart FCM"
menu items.
This file is not
written if leaving the application with the window closer, and
your changes will be lost in this case.
8. The
Image Geometry Dialog
This dialog can be reached with the button "Data" in the tool
bar.
Fig. B8: Image geometry dialog
With the image geometry dialog you can adjust the image geometry
parameters. It is divided into four panels and the button group:
a) Section "Image Size"
- Width and Size:
Here you can adjust the size of your image in pixels.
The size of an existing image is not changeable. If you
change these values on an existing image, a new window is
opened when leaving the dialog with OK rather than changing
the old images size. But, this new window contains all
parameters of the old one, you just need to press the "Draw"
button to get a resized copy of your original.
- Presets:
This drop down list contains some common image sizes just
for the sake of comfort. The range is from QQVGA ("Quarter
Quarter Video Graphics Array") to WQUXGA ("Wide Quad Ultra
Extended Graphics Array").
- Buttons "x 2", "x 3", "/
2" und "/3":
These buttons multiply or devide the actual width and height
by the given value. Multiplying is useful if you want to
downscale an image when exporting [antialiasing, see
chapters B.7.d) and B.13] and saves you the mental
arithmetic. The deviding buttons are only there to revert
modifications.
- Supersample:
This setting is used for improving the image quality by
calculating multiple iteration values per pixel and
averaging them. The bottom line is to calculate an image
bigger than displayed. If setting the supersample value to 2
e. g., in fact an image of double width and double
height is calculated.
Fig. B9: Without
Supersampling (value is 1)
|
Fig. B10: With
fourfold supersampling (value is 4)
|
Attention:
The supersampling is done in the space of the iterations, the
downscaling described above is done in the space of the colors. That is a
fundamental difference, there are advantages and
disadvantages for both (see also the section about the color dialog):
- With supersampling
you need more computing time only when calculating the
iterations, the coloring is done on the normal sized
image and is fast enough to be done in real time (if the
image is not too big).
- With downscaling
you have to create and work with a very big image which
is downsized not until the very last step, the export as
a file. You need more computing time not only when
calculating the iterations but also when coloring the
image because you have to handle always with a big
image. On large images coloring can not be done in real
time.
- With supersampling
you need a large number of colors; when using few colors
there will be artefacts. Look at this color gradient:

Fig . B11: Color gradient dark gray - red - light gray
If you decide to use only two colors out of this
gradient, e. g. dark gray and light gray, the
picture will look as usual without supersampling,
namely there are steps on the edges. But, with
supersampling these steps unfortunately will not
vanish as intended: Now there will be iteration
values of 2.5 e. g., and these are mapped
exactly to the red color in the gradient; the edges
will be even better to be seen - not what we want to
achieve:
Fig. B12:
Without supersampling, two colors
|
Fig. B13:
Artefacts with fourfold supersampling,
still two(!) colors
|
Conclusion:
Downscaling delivers better results than supersampling
if few colors are used, but needs because of the big
images much more computing time and memory.
Supersampling delivers as just as well results when
enough colors are used and saves computing time when
coloring and memory.
b) Section
"Borders"
These four elements let you adjust the mapping of the window
into the complex plane. crMin is the plane's left border, crMax
its right (real axis), ciMin its bottom and ciMax its top
(imaginary axis). Since the aspect ratio of a pixel is fixed to
1:1 you are not free in choosing arbitrary values for ciMin or
ciMax: At least one of this is calculated automatically
depending on the auto adjust check box. If both are checked the
top and bottom borders are calculated so that the middle of the
vertical axis will remain as it has been.
Normally you will not enter values here by hand but change the
image by zooming or moving it directly with the mouse.
c) Section
"Max. Iterations"
As you can read in section
C.3 the iteration
which is calculated for each pixel may never come to an end. You
can configure here the number of iterations which will be
calculated at the most. If this number is exceeded the procedure
terminates (and the pixel will go black).
It is not easy to find an optimal value for this maximal number:
High values will lead to long calculation times, low values will
cause "unsharp" images:
Fig. B15: Unsharp
image, 1600 iterations
|
Fig. B16: Sharper
image, 5600 iterations
|
A thumb rule (for Mandelbrot sets) is: When zooming into the
complex plane the number should become greater. This rule is
performed by the auto adjust check box. Especially for regions
in the "fissure" of the Mandelbrot set (Fig. B15 and B16 are
from that region) and for Julia sets you may correct this auto
setting by your own inputs. Julia sets often needs higher values
to avoid large black regions which are not really black.
The automatic can be influenced with the field "Multiply By":
The value calculated automatically will be multiplied with this
value, and the result is used for calculating the images.
d) Section
"Constant c"
If the active window shows a Julia set its c-value is displayed
here and may be altered. This can be done more comfortable with
the "Pick" button in the tool bar.
e) Buttons
- Help:
Opens this section of the user manual.
- Defaults:
Sets all entries to the default values.
- Draw New:
Draws a new picture with the actual settings. The new
picture is put as first element into the image list. The
Cancel button is not able to undo this!
- Apply:
Repaints the actual picture with the setting made in the
dialog. The Cancel button is not able to undo this!
- Cancel:
Leaves the dialog without applying the changes. This will
not work if the "Draw new" or "Apply" button has been
pressed before.
- OK:
Leaves the dialog applying the changes.
9. The
Image Colors Dialog
This dialog can be reached with the button "Colors" in the tool
bar.
Fig. B17: Image colors dialog
The image colors dialog lets you change the color mapping of
your fractal image. Let's have a closer look at the data FCM
generates while calculating an image. As described in section
C.3 the complex plane is scanned
pixel by pixel, and for each pixel the iteration is performed.
FCM stores the number of iterations needed for |z
n|
to become greater than 2.45 (square root of 6) in a
two-dimensional array of the same size as the image. Each value
in this array is mapped to a color, and the corresponding pixel
in your image will be set to this color. The mapping from value
to color can be manipulated here.
You see, there is a dependency to the maximal allowed iterations
described in the
previous
section. Say, we have in maximum 200 iterations, then we have
obviously 200 different colors at the most! (May be even less
because you could display a region of the complex plane where
the iteration terminates for all pixels before 200 iterations
are reached for one of them.)
a) Section
"Number of Colors"
Think, we look at a region of the complex plane where all 200
values of iterations are available, and the image could show 200
different colors therefore. Nevertheless we may wish not to use
all 200 colors, because we like to see an image with only two
colors e. g. This can be adjusted with the slider "Number
of Colors" if the "manual setting" radio button is active. Be
aware that the maximal choosable value depends on the "max.
Iteration" setting described in the previous section
B.8.
In Fig.
B17 there is a
value of 40. This means, that a pixel with an iteration number
of 41 will have the same color as a pixel with iteration number
1, with 42 the same as with 2 and so on.
If you play around a little with FCM and zoom into the
Mandelbrot set you will see that your images are better if you
don't use always the same fixed number of colors. Therefore FCM
tries to find a good choice by itself depending on image
parameters if one of the auto modes is on.
The first ["auto (count iterations in image)"] counts the number
of different iteration numbers in the image.
Example: Say there are some pixels with 10 iterations, other
pixels with 20 iterations and all the rest have 200. Then the
number of iterations is 3, more colors are not necessary (and
possible), and FCM sets the number of colors to this value. Zoom
clips into the Mandelbrot set tend to have a color flickering in
this auto mode.
The second ["auto (use max. iterations)"] uses the image
property "max. Iterations" (see Fig.
B8). This value may change
automatically when zooming in depending on your settings.
Third the automatically derived number of colors is always
modified by the number given in the field "reduce number of
colors by divisor"). Experiment with these values to get colors
you like!
b) Section
"Color Gradient Editor"
The color gradient editor is the most powerful tool to adjust
the images to the own imagination. Above we have seen that there
is a mapping from iterations to colors. But what iteration value
corresponds with what color? That is controlled with the color
gradient and the two sliders "Smallest Color" and "Biggest
Color".
At first you should create a color gradient containing the
wanted colors. A color gradient can be changed by adding,
deleting and changing the round color sliders. In fig.
B17 the color gradient
consists out of five colors (green, red, yellow, blue and white)
having the same distance from each other e. g.
The functions of the editor are as follows:
- Adding a color:
By left click with the mouse into the gradient or pressing
the "Add" button. The added color is always white.
- Deleting a color:
By dragging the round slider in top or down direction out of
the gradient or pressing the "Delete" button.
- Changing the position of
a color:
By moving the round slider with the mouse or entering a
value between 0 and 10,000 in the field "Position".
- Activating a color:
By clicking the round slider with the mouse or pressing the
buttons "<" or ">".
- Activating multiple
colors:
By clicking the round sliders with the mouse and holding
down the Ctrl- or Shift key.
- Changing a color:
By moving the round cursor in the field "Color Chooser" or
by entering its RGB value into the fields "Red", "Green" and
"Blue".
- Exchange all colors:
The button "o>o"
shifts all color values to the right, the position of the
round sliders remains unchanged. The button "o<o" shifts all
color values to the left.
- Align all colors:
The button "o-o-o"
moves all round sliders, all sliders have equal distances
from each other then.
- "Stretching" and
"Compressing":
If a round slider is moved with the Ctrl key pressed, all
distances between the sliders are stretched and/or
compressed.
- Color Gradient Presets:
There are some predefined color gradients selectable in the
scroll area. You can load and save your own gradients with
the buttons "Load" and "Save".
The color gradient of an image will be stored together with an
image and it is not necessary to store it seperately.
Now we have a color gradient, but the mapping between a pixel's
number of iterations and its color is still not clear. This can
be assigned with the to sliders '"Smallest" Color' and
'"Biggest" Color'. In Fig.
B17
the '"Smallest" Color' slider stands at the green position. That
means: All pixels with an iteration number of 1 become green.
The '"Biggest" Color' slider stands at the white region, and the
"Number of Colors" is 40. That means: A pixel with an iteration
number of 40 will become white. All color values between 1 and
40 are spread evenly over the color gradient between the two
sliders. A pixel with iteration value 41 has the same color as a
pixel with value 1 and so on. If the '"Smallest" Color' slider
stays behind the '"Biggest" Color' slider the colors are wrapped
around. You can see this easy if you choose "Number of Colors"
as 2 and play with the sliders: Only the two colors the sliders
are set on will be in the image.
Attention: Pixels with color value = max. iterations are always
black. This color can not be changed.
c) Further
Control Elements
- Proof Immediately:
If this box is checked all changes are immediately performed
in the actual image. If your image is small enough (or you
have a fast computer) you can change the colors nearly in
real time. This may give impressive effects.
- Apply to All Selected
Images:
If you have generated a clip by zooming into the Mandelbrot
set e. g. you will often change the color mapping for
some pictures because the colors are not satisfying. With
this check box you can command FCM to change the colors of
all selected images in the image list when leaving the
dialog. But, the buttons in the image list will only be
updated if the check box "Update
Buttons" is also checked.
- Buttons:
The buttons have the same functionality as in the image
geometry dialog described above.
10. The Animation
Parameters Dialog
This dialog can be reached with menu item
"Animation/Parameters ...".
Fig. B18: Animation parameters dialog
As we have seen in section
A.6.
you can generate animations by creating each single image by
hand. This is rather awkward. Therefore you can select some
images (two at least) from the image button panel, and FCM will
calculate a smooth transition between them automatically. How
this is done you can influence with the animation parameters
dialog.
a) First and
Last Image
In this panel the start and end image of the first selected
image pair are shown. The check boxes "Smooth Movement" cause
the calculation of additional images at start and end of the
transition, therefore the movement seems to be slower. So you
have a smoother transition from one pair to the next.
b) Settings
In this panel all parameters FCM is able to modify while
calculating an animation are listed (with the exception of
changes in the color gradient; such a transition you can not
influence). If a parameter does not differ in the start and end
image the spinner element is grayed, its entry is set to 0, and
it is not changeable. In Fig.
B18 you can see a
zoom into the Julia plane e. g. The first entry in the
resize spinner says to reduce the width of the image by 8
percent each image. This will result in 36 images as stated in
the last line. Of course this depends on the sizes of the start
and end image.
All parameters are influencing each other: If you change the
resizing percentage, this will result in a change of the image
number, and this results in a change of the other parameters.
Try it out.
Hint: This will only
work if the spinner you are modifying has the focus.
Unfortunately the Java Swing spinner element used here is buggy
(JRE 1.6) and does
not
have the focus even if the cursor blinks in it! Therefore FCM
sets the focus per program code when the mouse enters the
spinner. To indicate this the label's color is changed to blue.
Only in this state the update mechanism is working! This means
that you can not modify the entries reasonably with the
keyboard, the mouse is necessary, I'm sorry.
GUI Element
|
Description
|
Duration/ms
|
In this field you can
enter the duration (in milliseconds) the transition
between the start and end image should have.
For an animation played inert FCM this value has no
meaning. It is important only if you want to create an
AVI file out of it. And even then the duration is the
result of the number of images (the last field in the
dialog) and the frame rate given in the video creation dialog
only.
What is the field good for then? It is needed in the
following situation:
You want to add music to an animation, and according to
the rhythm the transitions should take place. Now you
need a well defined duration for each transition. If you
know the frame rate that the AVI file will have you can
easily calculate the needed number of images of a
transition to get the wanted duration of course.
Oafishly if you want to change the frame rate: Then you
have to step through all transitions and to adjust the
number of images. Therefore you can remember the
duration in this field. This value will be used only
with menu item "Animation/Adjust
Frame Rate ...". This menu item gets the frame
rate out of the video creation dialog and adjusts for
all transitions the number of images so that the
duration for the transition remains the same.
|
Frames per Second
|
For this field the same
as for the field "Duration/ms" is true: It is only of
interest when creating AVI files. It helps you to avoid
mental arithmetic when you want to get the duration, the
frame rate and the number of images together.
|
Resize each image by
|
This spinner is enabled
if the start image differs in size from the end image.
You can enter here the percentage from the actual image
width the next picture will differ in size from the
current picture.
|
Move each image by
|
This spinner is enabled
if the start image differs in position from the end
image. The position may differ in its horizontal
or vertical position. The average is calculated,
this results in a constant. Each image is moved in
horizontal and vertical direction by the percentage of
that constant.
|
Change max. number of
iterations by
|
This spinner is enabled
if the max. iteration number differs between start and
end image and at least one of them is not set to "auto
adjust" (see section
B.8). Since this entry should differ between start
and end image only in case of zooming into the
plane, and then it should increase logarithmically, the
value you can enter here is the percentual change to the
next image rather than an absolute value.
|
Change
Julia
constant cr by
|
This spinner is enabled
if the real part of the Julia constant c differs between
start and end image. The difference is calculated by
FCM, and you can enter here a percentage of this
difference. This results in a constant value each new
image will differ from its predecessor.
|
Change Julia constant ci
by |
Same as above.
|
Change number of colors
by
|
This spinner is enabled
if the number of colors differs between start and end
image and at least one of them is not set to an "auto"
mode (see section B.9).
The value you can enter here is the percentage of the
actual color number the next image will differ from the
current one.
|
Change
"Smallest"
Color by
|
This spinner is enabled
if the '"Smallest" Color' differs between start and end
image. The following four cases are to distinguish:
- The start value is lesser than the end value and you
increase
the value each step => the value moves forward
from start to end each step:
0
start
->
end
10000
|-------------|--------------------------|------------|
- The start value is greater than the end value and you
increase
the value each step => the value moves forward
from start to end each step, but wraps around when
reaching the max. value of 10000:
0
->
end
start -> 10000
|-------------|--------------------------|------------|
- The start value is lesser than the end value and you
decrease
the value each step => the value moves backward
from start to end each step, but wraps around when
reaching the min. value of 0:
0 <-
start
end <- 10000
|-------------|--------------------------|------------|
- The start value is greater than the end value and
you decrease
the value each step => the value moves back from
start to end:
0
end
<-
start
10000
|-------------|--------------------------|------------|
In the spinner the absolute value for each step can be
entered. To order FCM to move backward enter a negative
value.
|
Change "Biggest" Color by
|
Same as above.
|
Results in
|
This spinner is always
enabled. Enter the number of images the animation will
consist of here. Making changes will alter all other
parameters of course.
|
Table B7: Animation parameters
Hint: The key frames contain the complete information to create
an animation. Therefore it is sufficient to store the key frames
to disk only, the animation can be restored completely by
recalculating it again.
Tip: Especially with clips of Julia sets you have to experiment
with the parameters a little and recreate images often. This
takes a lot of calculation time with larger images. Therefore it
is better to create a clip with small images and save it when
finished. When loading again you can adjust the size to an
arbitrary size by opening an empty window with the wanted size
first.
11. The Video Creation
Dialog
This dialog can be reached with menu item "File/Encode Exported
Images To Video...".
Fig. B19: Video creation dialog
a) Concept of
Video Creation
Creation of MPEG- or AVI video files is a complex procedure, FCM
is not able to do it without a further software.
You have to perform the following steps:
- Create an animation using FCM as described above. Result
is a number of images in the image list.
- Export all these images with menu item "File/Export All
Images As ..." as BMP-, PNG- or JPG files in an empty
folder. Result is: All these images (and only these images)
are in that folder at your harddisk.
- Start an external software to encode the images into a
video file. Result is the animation as MPEG- or AVI file (or
another video format) at your harddisk.
There are some free applications to convert single images into a
video known to me:
- MEncoder (http://www.mplayerhq.hu):
Very powerful open source software, extensive functionality,
but no graphical user interface.
- Bmp2Avi und pjBmp2Avi (http://www.divx-digest.com/software/bmp2avi.html):
Two little, easy to use applications written by Paul
Roberts; Bmp2Avi is a console application, pjBmp2Avi has a
graphical user interface.
- PicToAvi (http://www.fractalizer.de):
A little, easy to use application by Sven Kohn and Robert
Sontheimer, delivered with the fractal generator
"Fractalizer"; it is not able to embed audio files.
MEncoder supports most image formats and has the biggest
functionality, therefore FCM supports video creation with this
application by means of the video creation dialog; it is
graphical user interface allowing you to feed the most important
parameters into MEncoder's video creation console application.
So download the file "MPlayer-mingw32-1.0rc2.zip" (or newer)
from
http://www.mplayerhq.hu/design7/dload.html
and unpack it at an arbitrary place (nearly arbitrary: the path
must not contain
spaces!). The folder "MPlayer-1.0rc2" will be created,
in this folder are the two files "mencoder.exe" und
"mplayer.exe"; FCM will use theses console applications to
create and to play videos.
b) Section
"Files And Folders"
The most important section is "Files And Folders"; when all
settings are done here, the remainder of the dialog are filled
automatically with default settings. Changes are only needed if
wanted.
GUI Element
|
Description
|
Input File Type
|
MPlayer is able to handle
various image formats. Enter the type you have exported
your images into, BMP, PNG or JPG.
|
Inpput File Folder
|
This is the folder you
have exported your images into.
|
Audio File
|
If you want to hear some
music while playing the clip choose an audio file here.
MEncoder will mux it into the video stream.
|
Output File
|
Give place and name of
your video file here.
|
MPlayer Folder
|
FCM needs to know where
your MEncoder is. Give the folder here where the file
"mencoder.exe" is in.
|
Table B8: Section "Files And
Folders"
c) Section
"Video Settings"
In this section you can provide MEncoder with some parameters.
The most important ones are available with drop down lists.
GUI Element |
Description |
Video Codec
|
Used for selecting the
video codec. Which is best depends on the videoplayer
you are using. The Windows Mediaplayer is best satisfied
with "msmpeg4v2". |
Audio Codec
|
The same is true as for
the video codec. Use "copy", "mp3lame" or "pcm" for
Windows Mediaplayer compatibility.
|
kBits per Second
|
MEncoder can adjust the
data rate steplessly, some standard presets are in the
drop down list. As higher the data rate is as higher is
the video quality, but as bigger is the resulting video
file. Experiment to find the best agreement.
|
General Options
|
This field is for general
parameters for the MEncoder if you want to set one or
another. See the MEncoder documetation.
|
Codec Options
|
Here some parameters are
given concerning the video codec. You could use "General
Options" instead, the field is there only for the sake
of clarity.
|
Frames per Second
|
Here is also true: As
higher the frame rate as higher is the video quality (a
cinema movie has 24 images per second, in TV there are
25), but as bigger will be the video file. And, last but
not least your video is shorter!
15 frames per second are a good compromise.
|
Table B9: Section "Video
Settings"
d) Section
"Create And Play Video"
These settings will be normally filled by FCM automatically when
settings in the other sections are made. Change these settings
only if wanted (e. g. if you want to use another
application instead of MEncoder) and do not change the settings
above anymore because these changes will override your settings
here again.
The principle is: FCM creates a batch file "enc.bat" when the
button "Create Video" is pressed. This file contains all
commands and parameters needed for encoding your images into a
video and will be executed then via the system console.
In the same way a batch file "play.bat" is created and executed
when the button "Play Video" is pressed.
GUI Element |
Description |
Shell Command
|
This is the command for
starting a console shell and executing a batch command.
Don't change this under Windows; under Linux you could
enter your favourite shell here.
|
Encoding Batch File
|
Here you can see the
content of the batch file "enc.bat" which is created
when pressing the "Create Video" button. The batch
program changes into the directory with your exported
images first and executes MEncoder with all settings
given in this dialog then.
|
Playing Batch File
|
The same as "Encoding
Batch File", but this is the file for playing the
created video, executed when the "Play Video" button is
pressed. The most important MPlayer commands while
playing are:
- Left: -10 seconds
- Right: + 10 seconds
- Down: - 1 minute
- Up: + 1 minute
- Backspace: normal speed
- {: half speed
- }: double speed
- F: Full screen
|
Encode Command
|
This is the command for
starting "enc.bat".
|
Play Command
|
This is the command for
starting "play.bat".
|
Close Console Window
After Executing Command
|
When encoding or playing
a video a console window opens executing the batch file.
The window remains open afterwards to let you see error
messages etc. This is cumbersome when you have adjusted
all parameters and you are not interested in the
messages any longer. So check this box, and the console
window will be closed after executing the command.
|
Table B10: Section "Create And
Play Video"
e) Tips for Creating High
Quality Movies
Clips like to consist out of some thousend images which can be
hold in memory only if they are small (e. g. 200 x 150
pixels). But, to create an AVI file in good quality out of these
you need the exported images in a bigger format (e. g. 800
x 600 pixels). If you want to improve the quality by scaling
down the images while exporting (see section
B.8.a)) even bigger formats are
recommended (e. g. 1600 x 1200 pixel). Of course you could split
your clip into parts and calculate and export them one after
another. But using menu item "File/Open Clip But Export Each
Image As ..." is much more comfortable:
- Prepare your complete clip in a small format so that it
fits in the memory.
- Save your clip and delete the image list.
- If you want to scale down the images for quality
improvement enter in the preferences
dialog into field "Downscale Image When Exporting to"
the value 50 % e. g.
- Put into the image
geometry dialog a big image format, e. g. 1600 x
1200 pixels.
- Open with menu item "File/New Mandelbrot Image" a new
window of this size.
- Now click on menu item "File/Open Clip But Export Each
Image As ...". Choose your small format clip and enter in
the second file dialog the name of the first image to
export. The file name should be something like
"xxx_0001.bmp".
- FCM states that the clip has another size than the open
window. Answer the question "Adjust image to window?" with
"Yes".
=> Each image of the clip will be calculated in the big
format now, exported immediately (scaled down when indicated)
and removed from the image list then. Only the last image will
remain in the image list at the end, and all images are on the
hard disk as *.bmp files.
The exported images can be converted to an AVI file now as
described above.
12. Some
Technical Aspects
To generate a fractal image three kinds of data are involved:
First there are the image parameters. These are the parameters
you can adjust in the parameter dialog boxes (see Figs.
B8 and
B9). They are sufficient
to describe an image completely and to calculate the image. Only
these parameters are stored to disk if menu item "File/Save with
Colors Array" is
not
checked.
Second there is the array of iteration numbers. It is a
two-dimensional array of 32-bit-values. In this array for each
pixel is stored how many iterations are necessary to exceed the
border of 2.45 for |z
n| (see
chapter C for details); this
value corresponds with a color value, but it is not the
24-bit-true-color-value you will see in the image window. The
array is stored in main memory for each image in the image list.
If menu item "File/Save with Colors Array" is active the array
is stored to disk additionally to the image parameters.
Third there is the true color image you can see in the image
windows. This image is calculated out of the array of iteration
numbers by using the color parameters each time an image of the
list is activated. It is not stored with an image (it is owned
by the window and not by the image). When playing a clip the
same happens: The true color image has to be recalculated out of
the iterations array for each single image. You can imagine that
this colorizing process needs time! But, it saves memory, and
therefore you can hold more images in the list, and a clip can
be longer.
All images are held in the main memory, no hard disk space is
used.
Conclusion: If your computer is slow you should generate clips
with smaller images to speed up the frame rate. May be it's
better to activate the menu item "File/Save with Colors Array".
13. Example: Optimizing an Image
The following example shall show how to create high quality
images with FCM in an efficient way. Restart FCM to ensure all
Parameters are set to their defaults.
The most important rule while creating images with FCM is:
Work with
images as small as possible!
The calculation of fractals is very computationally intensive,
as larger the images are as slower is FCM. On my Pentium M 1500
a size of 400 x 300 Pixels is a good choice (this is why this
size is the default value). Only as the last step, when all
parameters are set as wanted, you should create a big image
which is to be saved as JPG file e. g. But, as long as you
have to screw at the parameters a lot, it's not bad to use even
smaller images, therefore the following examples have a size of
200 x 150 Pixels only.
The first step is always to search for an interesting region in
the c-plane. Let's have a look into the fissure between "head"
and "body" of the Mandelbrot set; after some zooms we find a
promising place, a structure like a jellyfish:
Fig. B20: Zoom into the
Mandelbrot set searching an interesting region
You see in the last image still large black regions which are
not "Mandelbrot like"; presumebly the maximal number of
iterations chosen by FCM is not big enough. Open the geometry
dialog (button "Data" in the tool bar) and increase the maximal
number of iterations from about 650 to 2000, the black regions
will vanish:
Fig. B21: Maximal number of iterations increased to 2000
But, the colors are rather boring now, because the number
of colors is increased too since it is linked with the number of
iterations. Such spiral regions appear especially interesting
when choosing the number of colors so that the colors are
repeated in each spiral cycle. This we can achieve in the color
dialog (button "Colors" in the tool bar) with the slider "Number
of Colors".


Fig. B22: Color gradient "FCM", number of colors reduced
to 63
|


Fig. B23: Color gradient "Spectrum (b/w)", modified
(white color removed, all colors moved to the left a
little)
|
In fig. B22 the number of colors is reduced to 63, but, the
colors are somewhat pale. The color gradient "Spectrum (s/w)" is
a little more colorful. It appears even better if you remove the
white color from the gradient and move all colors to the left a
little until the image gets a dark background, the colors are
more shiny then (fig. B23).
A little unattractive are the clear color gradations.
Unfortunately FCM can not do it better, there is the
Fractalizer with its "fine
gradations" more advanced [perhaps I can figure out some day how
they do it :-)]. But you can take advantage of the Mandelbrot
set's self-similarity and look for a similar region with more
gradations. So, look for the next smaller version of the
Mandelbrot set on the "antenna", zoom to the same place between
head and body and adjust the colors in an appropriate way.
Fig. B24: Smaller Mandelbrot set on the mother's "antenna"
At last is to decide how big the finished image should be,
e. g. 400 x 300 Pixels. Supersampling is not appropriate
here because of the small number of colors (try it), therefore
we use "downscaling" for quality improvement.
To do this open the image geometry dialog and push the "x 2"
button three times. When leaving the dialog with OK a new empty
window with the size of 1600 x 1200 pixels is created. Draw the
picture again now (button "Draw" in the tool bar as usual).
In the preferences dialog (menu item
"File/Preferences ...") enter in the drop down list
"Downscale Image When Exporting to" the value 25 % and leave the
dialog. Now save the image with "File/Export Image As ...".
Fig. B25: Finished image, downscaled to 400 x 300 Pixel
C. Short
Introduction into the Mathematical Aspects
The following sections give a (very) little background
information on the techniques used for generating the fractal
images.
1. Iterations
If you calculate an iteration, you do the same procedure several
times and use the result of that procedure as input for the
next. E. g. you could decide to add a constant to a number
repeatedly. Say, your first number is 0, and your constant is
1.2. You will get the sequence 0, 1.2, 2.4, 3.6, ... and so
on. Let us write it a little more formal:
r0 = 0
r1 = r0
+ 1.2 = 0 + 1.2 = 1.2
r2 = r1
+ 1.2 = 1.2 + 1.2 = 2.4
r3 = r2
+ 1.2 = 2.4 + 1.2 = 3.6
...
And shorter:
r0 = 0, c = 1.2
rn = rn-1
+ c
You may do this iteration as long as you want to stop,
e. g. if r
n has reached a value greater than 4.
Look at the following little different iteration formula as
another example:
r0 = 0, c = 1.2
rn = rn-12
+ c
In other words: Choose as start value 0 and as constant 1.2
again. To calculate the next value square the predecessor and
add the constant.
This results in the following sequence as you easy can compute:
0, 1.2, 2.64, 8.17, ...
If we choose c = 0.5 the sequence is: 0, 0.5, 0.75, 1.06, 1.63,
3.15, 10.44, ...
If we choose c = -2 the sequence is: 0, -2, 2, 2, 2, 2, ...
We state as an interesting result: In the first case the
fourth number (8.17) is
greater then our limit 4, in the second case the
seventh number (10.44) is
greater than 4, in the third case we
never reach our limit 4! This depends obviously
on the constant
c
and/or the start value
r0.
How could we visualize this result? We give each number a color
(e. g. 4 = green, 7 = red, never = black) and draw a point
of this color for each c-value onto an axis:
Fig. C1: Real axis with c-values
On this picture the dots say immediately to us:
"Hello, I am the c-value
-2,
and I
never reach your
limit, therefore I am
black."
"Hello, I am the c-value
0,
and I need
4 iterations
to reach your limit, therefore I am
green."
"Hello, I am the c-value
0.5,
and I need
7 iterations
to reach your limit, therefore I am
red."
2. Complex
Numbers
To understand what can be seen in the fractal pictures generated
by FCM you need a little imagination what complex numbers are.
Complex numbers are an extension of real numbers. As you may
remember real numbers are the combination of rational (the set
of all fractions) and irrational (algebraic and transcendent)
numbers. But real numbers have a disadvantage: You can not get
roots of negative numbers because the product of two negative
numbers is always a positive number [what could be the root of
-2? No, -1.41*(-1.41) results in +2!]. Complex numbers overcome
this by introducing the "imaginary unit" i, which is defined to
be the root of -1, or in other words i
2 = -1.
A complex number z has the form z = a + bi with real numbers a
and b. a is the real part and b is the imaginary part of z.
Important for us are three aspects:
- A complex number can be drawn as a point into the so
called complex plane.
- There are rules to calculate with complex numbers,
especially you can add and multiply them.
- A complex number has a distance from the origin in the
complex plane.
a) The Complex
Plane
As an example let's look at a complex number
z1 = 3 + 2i. You can
locate this number in a Cartesian coordinate system at position
(3, 2). The horizontal axis is used to display the real part,
the vertical axis the imaginary part of the number:
Fig. C2: The complex plane
Also you can see in Fig. C2 the absolute value (distance from
z1 to the
origin), it is signed with
|z1|, and another complex number
z2 = 2 - 1i.
b) Calculation
Rules
How do you calculate with complex numbers? This is as easy as
with normal real numbers; just keep in mind that i*i = -1. We
need only to multiply and to add complex numbers for our
iteration described below. The rules for these operations with a
complex number
z1 = a + bi and another
z2 = c + di are:
Addition: z1 + z2 = a+bi + c+di
= a+c +
(b+d)i
Multiplication: z1 * z2 = (a+bi)*(c+di)
= a*c + a*di + bi*c + bi*di
= a*c + a*di + bi*c + b*d*i*i
= a*c + a*di + bi*c + b*d*(-1)
= ac-bd + (ad+bc)i
And the absolute value is defined to be:
_____
|z| =
a2+b2
As an example let's multiply the numbers of Fig. C2:
z1 = 3+2i and
z2 = 2-1i:
z1 * z2 = (3+2i)*(2-1i)
= 3*2 - 3*1i + 2i*2 -2i*1i
= 6 - 3i + 4i - 2i*i
= 6 + i + 2
= 8 + i
And the absolute value of
z1 is for example:
_______ ___
|z1| =
32 + 22 =
13 = 3.61
[For the sake of completeness: The complex roots of -2 are (0 +
1.41 i) and (0 - 1.41 i), because
-1.41 i * -1.41 i = 1.41 i * 1.41 i = 2*i
2 = -2.]
3. The
Mandelbrot Set
Let's look at an iteration with complex numbers. We could use
the same iteration formula as in section
C.1
with a complex start value
z0 and a complex constant
c, e. g.:
z0 = 0 + 0i, c = -1.3 + 0.8i
zn = zn-12
+ c
In the same way as
above we can ask
"how many iterations we will need till the absolute value of
zn is
greater than 4?". And this is what you can see in a Mandelbrot
picture generated by FCM! (To be exactly: The limit is 2.45
instead of 4.)
In such a picture you can see the complex plane, each point of
it is interpreted as a different c-value. The plane is scanned
point for point and line for line, and the iteration is
calculated for each point (= c-value). Each point delivers the
number of how many iterations are necessary to get an absolute
value for z greater than 4. Each number is associated with a
color, and the pixel corresponding to the c-value is painted in
this color.
Now there are some points for which the absolute value will
never become greater than 4. These points are colored with
black, and all of these points are the Mandelbrot set:
Fig. C3: Mandelbrot set
All black points build a characteristic shape as you can see in
Fig. C3. The shape's crumpled boundary is a typical fractal
structure: If you take a magnifying glass and look more closely
at it, you will find that it looks exactly as crumpled as
without the glass. Try it out by zooming into the plane with
FCM. You will discover a universe of bizarre structures, and all
comes out of that simple iteration!
By the way, the set is named after Benoit B. Mandelbrot, a
Polish-American mathematician.
4. The Julia Set
The Julia set is built by the same iteration formula as the
Mandelbrot set. The difference is: You don't see the c-plane but
the z-plane, and the constant c is fix for all calculated
points.
That means: An arbitrary complex constant c is chosen. Then the
complex plane is scanned, again point by point, line by line.
Each point is interpreted now as the start value
z0 and not
as c
. The iteration
is performed exactly as in the Mandelbrot set. Of course, the
result is different and depends on the chosen value c:
Fig. C4: Julia set, c = -0.8 + 0.2i
The Julia set has its name from the French mathematician Gaston
Julia.
D. Appendix
1. Known Bugs
- Sometimes the "Out of memory" error is displayed only on
the console output and not in a message box as it should be
(it seems I don't catch all out-of-memory exceptions).
2. Known
Shortcomings
- There is no undo function.
- The system clipboard is not supported.
- Multi-core processors have no special support.
- A bug in Internet Explorer 7 causes the help page to be
opened always at the beginning of the file instead at the
correct position. Workaround: Install Firefox e. g. and
choose it as help browser with menu item
"File/Preferences ...".
Error reports and suggestions for improvement are highly
welcome. Please, write to
fs@friedemann-seebass.de.
3. Change Log
4 June 2006: V.0.80:
2 July 2006: V.0.90:
- New animation menu.
- Some changes in the user interface.
2 August 6 2006: V.1.00:
- German user interface available.
- List of skins is built dynamically; under Linux there is
additionally the skin "GTK" therefore.
- Some minor bug fixes.
13 August 2006: V.1.10:
- The menu items "Restart FCM in German" and "Restart FCM in
English" are working in Linux too.
- Picking is possible with the keyboard.
- Handling of zooming improved.
31 January 2007: V.1.20:
- An image can be moved by dragging it with the mouse.
- The max. memory for the Java VM can be set for a restart.
- Memory usage can be displayed in the program window.
11 February 2007: V.1.30:
- The dialog "Image Geometry" was not shown completely and
recalculated the imaginary borders by its own with JRE 1.6.
These bugs are fixed.
- Images and clips can get another pixel size when loaded as
they had when saved.
- In dialog "Preferences" you can select the new flag
"Confirm closing FCM".
26 October 2008: V.2.00:
- Different color gradients possible.
- Color gradient editor.
- Supersampling in the iteration space.
- Downscaling of images for quality improvement
(anti-aliasing).
- Key frames for creating animations.
- Integration of MEncoder for creation of AVI- and
MPEG-videos.
20 March 2009: V.2.10:
- New navigation commands "Go To Next Key Frame" and "Go To
Previous Key Frame".
- FCM plays a sound when finishing operations.
- The Stop button works reliably again also with newer Java
Runtime Environments.
- Clicking on the border output of a picture in the status
bar displays a rectangle in all open windows, symbolizing
the size and position of the actual window. So it is easy to
find the actual cutting of a zoom in a bigger image.
- Clicking on the Julia constant of a Julia image in the
status bar displays the Julia constant of the actual image
in all open windows.
- Minor bug fixes.
5 February 2010: V.2.11:
- In the drop down list for the VM memory in the
"Preferences" dialog there are now defaults up to 8 GB.
- Optimization when loading clips: Only the colors are
recalculated if the other image parameters are the same.
- New menu item for concurrent loading and exporting the
images of a clip.
- New menu item "Animation/Adjust Frame Rate ..."; it allows
to adjust comfortably the frame for a clip as a whole.
27 February 2010: V.2.12:
- The new menu item "File/Open Clip But Export Each Image
As ..." was not translated in the German version.
- File dialogs propose a file extension now if unambiguously
possible.
15 July 2012: V2.2.0:
- FCM comes with an executable file "fcm.exe" now. The
former file "fcm.jar" is still available.
- FCM is deployed with an installer (Windows only).
- Under Windows Vista and Windows 7 you could not see which
image in the image list is activated.
- Minor bugfixes.
4. Other
Fractal Generators
There are some other free fractal generators available in the
net which I like:
- ChaosPro (www.chaospro.de):
Enormous functionality, most different fractal algorithms.
- Fractalizer (www.fractalizer.de):
Creates only Mandelbrot sets, but with the best image
quality of all fractal generators known to me.
- Fractint (spanky.triumf.ca/www/fractint/fractint.html):
The classic fractal generator, user interface needs getting
used to nowadays because its not graphical but text based.
- XaoS (xaos.sf.net):
Different fractal algorithms, zooms into the images in real
time!