GNU-Darwin Web

# 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.)

• 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)

#### Version 0.90b: (14/9/97)

• No changes in source code, only english language documentation added.

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!