1. Introduction
Idea and purpose of this program is the calculation of three-dimensional
fractals. The calculated objects are twisted, freely in space floating
(and - of course - fractal) "lumps" which look like made of dough - in
contrast to what is normally called "three-dimensional" fractals (namely
a simple reinterpretation of the two-dimensional data).
The objects can be colored by linking space coordinates (or other parameters)
to colors using a mathematical formula. The palette of
colors can consist of up to 50 colors or color ranges.
Additionally it is possible to define intersection planes. With this
feature the internal construction of the fractals can be displayed. Of
course, especially interesting is an intersection with the complex plane:
you get the usual two-dimensional fractal as intersection object how it
could also be calculated by "Fractint" for example. Moreover it can be
seen how different regions of the two-dimensional fractal are connected
together in three-dimensional space.
Screenshot of Quat 1.2 (under Linux):
Normally, the the picture is calculated and saved in 24bit true color,
but it can be displayed in 256 color during calculation (however in poorer
quality).
The fractals calculated with Quat correspond exactly to the usual, two-
dimensional "julia sets", which almost every fractal program can calculate.
(Available iteration formulas are "Classical Julia" xn+1
= xn2 - c and "Lambda Julia" xn+1=cxn(1-xn)
; x0 represents the pixel being calculated.)
To achieve the third dimension, Quat uses the so-called "Hamiltonian
quaternions" instead of the complex numbers with two components (real and
imaginary part). The "quaternions" are a generalization of the complex
numbers and consist of 4 components (1 real part, 3 imaginary parts). If
you set the 2 additional components to zero, you get the usual complex
numbers. Using quaternions (by the way, the name "Quat" is derived from
"quaternions") it would be possible to calculate even four-dimensional
fractals, nevertheless, only three-dimensional ones are really calculated.
(If somebody invents a four-dimensional monitor, I will agree to change
my program accordingly... :-) )
Generation of a really three dimensional view is possible (3d stereo).
The fractal can be seen three dimensional without any utilities like 3d
glasses.
The output format is the PNG format. It is the successor of GIF and
offers - like GIF - compression of image data without loss of quality (JPEG
compresses better, but the quality gets worse). More information on PNG:
http://www.libpng.org/pub/png/.
Because of the fact that PNG allows the storage of data specific to the
application, Quat saves all data neccessary for the generation of the image
within the PNG picture.
Quat uses a library named "ZLIB" to write the PNG-files. This library
is a compression library and has nothing to do with fractal calculation.
It was written by Jean-loup Gailly and Mark Adler. More information on
ZLIB: http://www.zlib.org/
The user interface was implemented using the portable "Fast Light Toolkit"
(FLTK). The hompepage of this project is located at
http://www.fltk.org/
Quat is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Special thanks to Max Schwoerer for the clarification of some of the
juridical questions, and to Oliver Siemoneit for his help on the English
translation.
Many thanks to Larry Berlin (lberlin@sonic.net)
for his advice in stereo view related topics, his many ideas for how to
improve the program (especially the user interface), his testing of pre-release
versions of Quat 0.92.
Larry Berlin maintains a great 3D-ezine (http://3dzine.simplenet.com/3dzine.html).
He plans to show a gallery of images he derived from objects generated
by Quat. I had the chance to see some examples. Really worth visiting!
Thanks to Eva-Maria von Garrel for testing.
1.1 What's new?
Version 1.20:
New features:
- Resizable Julia Preview in Parameter Editor, which
displays with the same aspect ratio as the image.
- Tooltips & integrated documentation browser.
- some usability improvements.
- Windows version: Uses an installer (Inno Setup)
- Uses FLTK 1.1, which has some big improvements compared to 1.0
(the file chooser e.g.)
Bugfixes:
- Intersection Editor did not work correctly with more than one
intersection plane.
- High Bailout values couldn't be read from INI file.
- Parameters in the "Other Editor" weren't updated when INI file
was read within the Parameter Editor.
- Unix: Quat hanged when a directory was selected instead an
INI file.
- An empty image (when calculation was stopped before the first
line was drawn) wasn't written correctly.
Version 1.11: (Jul/12/2001)
No new features
Bugfixes:
- Calculation in the DOS version can be interrupted by a keypress again.
- Some changes of source code to make it compatible with newer compilers.
Version 1.10: (Dec/14/2000)
New features:
- Faster calculation of images using the "lambda" formula (approx. 20% faster)
- 3 new iteration formulas available:
- xn+1 = xn*ln(xn) - c
- Cubic Julia: xn+1 = xn3 - c
- xn+1 = xnp1 - c
- The format of the PNG quAt chunk was changed for the 3rd new formula
(which takes an extra parameter as its exponent)
Bugfixes:
- The normal vector was calculated wrong in some situations, which affected
the lighting. Old images, which are re-calculated with version >=1.10, may
show changed lighting.
- Filename extensions are appended correctly when saving.
- Quat should now recognize if it runs out of memory with huge images.
Version 1.01: (Aug/16/2000)
Bugfix release:
- Bug fixed that sometimes crashed Quat at leaving the Parameter Editor.
- Range checking of the parameter of the orbit functions added.
Version 1.00: (Aug/7/2000)
-
The user interface was improved and rewritten completely with FLTK.
-
new, object related way of coloring the object (see the new functions for
the color formula: orbite, orbitj, orbitk and orbitl)
Version 0.92: (Dec/7/1998 ; 0.92b: Oct/5/1999)
-
Finally added a GUI in Windows and X Window versions: [Graphical] User
Interface, though I never wanted to do this...
full functionality of hitherto (and still) existing initialization
files can be reached through dialog-boxes: There is an "Object Editor",
a "View Editor", a "Color Editor", an "Intersection Editor" and a dialog
for the remaining parameters.
There now are also scroll bars when the image is larger than the window.
The user interface is completely Windows style (Image|Open, Image|Save,
Image|Save As,...), which also means that much more memory is needed than
before...
-
Windows version: compiled for 32bit (thus requires Win 95 or NT), is much
faster than before, supports long file names, Win95 look&feel.
-
Generation of 3D stereo pairs, which can be viewed in true 3D without any
special equipment (through the so called "cross eyed view").
For this the key word "interocular" has been
added.
-
A new formula added: xn+1 = cxn(1-xn)
-
Generation of so-called "ZBuffers". This makes it possible to change certain
parameters, that don't have anything to do with the fractal calculation
itself (colors for example), even after calculation. One can play with
the object this way, try different colors for example, to see what looks
best without having to wait a long time.
-
another, simpler algorithm for calculation of normal vector is used.
-
New functions for color formula: atan, asin and acos
-
the calculation time is stored along with the image (but not very exactly,
in seconds only)
-
linked against the library zlib, version 1.1.3.
Version 0.91: (8/2/1998)
-
initialization file structure changed
now all the information can be kept in one file, but the old scheme
is also possible by using the keyword "include <file>". Keywords "colorfile",
"objectfile" and "cutfile" are no longer recognized (use "include" instead.)
-
antialiasing keyword added
This feature is used to reduce moire patterns which disturb the image.
Results in much better image quality in most cases!
-
formula interpreter ("colorscheme") rewritten.
-
bugfix concerning the option "-p" (Segmentation fault)
-
bugfix: Machines which need "alignment" of "doubles" (DEC Alpha, not Intel)
could not create images with intersection planes.
-
Windows version: Improved usage in Win95 (Drag & Drop on Icon, Context
menu)
For more information, read paragraph 3.2 in this
file.
Version 0.90b: (14/9/97)
-
No changes in source code, only english language documentation added.
Version 0.90: (29/7/97)
Initial version.
1.2 System requirements
Theoretically none, if you are able to compile ANSI-C/C++-Code with your
system... :-)
The requirements for the pre-compiled (binary) versions of Quat are:
- Windows 95/98/ME/XP/NT/2000: Quat runs on probably any system Windows runs on;
(I only tested under Windows 95, but there's no reason it shouldn't work
with later versions.)
-
Linux: glibc 2.2, system based on gcc 2.95 (and not 3.x). Tested using
Slackware 8.0. It should not be a problem to compile Quat for other
Linux distributions.
-
DOS: (text version without output on screen). 486 processor or better (this
includes Pentium), 4 MB RAM (theoretical value, I wasn't able to test it,
because I don't have a computer with that few memory). It doesn't work
with pure DOS (without Win95/98 in background), but it is possible
to compile such a version with DJGPP.
The source code of Quat is available, so it is possible to create a text
only version (without graphical display, but with minimal memory usage) on
any system
that can compile ANSI-C. This makes sense for UNIX systems for example,
which often have a GNU-C compiler installed along with the operating system.
(But it should also be possible to use the system's native compiler.)
C++ is only needed for the user interface.
1.3 Bugs and adresses, Mailing list
If you have some proposals for improving this program or if you want to
report a bug, please send me an email
(dirk.meyer@studserv.uni-stuttgart.de).
I appreciate any feedback. If you like to (and are able to) program, you
can send me your source code. I'll build it into future versions. (Of course
I'll mention you as the author!) I have the model of "Fractint" in mind,
maybe there are also some enthusiasts in this case!
My postal adress is:
Dirk Meyer
Marbacher Weg 29
D-71334 Waiblingen
Germany
New versions (and the source-code) of Quat are available at
http://www.physcip.uni-stuttgart.de/phy11733/index_e.html
There's also a Mailing List available, which is used to discuss artistical
aspects as also technical and mathematical topics. You can look at an archive
of old messages at
http://groups.yahoo.com/group/quat/
To subscribe to the list and automatically receive all new messages,
just send an e-mail to quat-subscribe@yahoogroups.com