Quat - Ein 3D-Fraktal-Generator

Version 0.92
Copyright (C) 1997,98 Dirk Meyer
email: dirk.meyer@studbox.uni-stuttgart.de


Inhalt:
1. Einführung
    1.1 Was ist neu?
    1.2 Systemvoraussetzungen
    1.3 Bugs und Adressen
2. Generelle Hinweise
    2.1 Mathematische Grundlagen zur Berechnung von Fraktalen
    2.2 Koordinatensysteme und Festlegung der Bildebene
    2.3 ZBuffer
3. Bedienung
    3.1 Benutzen der Version mit Benutzeroberfläche (Windows, X Window System)
            Object Editor, View Editor, Color Editor und Intersection Editor
    3.2 Weitere Features von Quat in Windows 95
    3.3 Benutzen der Textversion
4. Aufbau der Initialisierungsdatei(en)
    4.1 Schlüsselwörter zur Definition von fraktalem Objekt und der Ansicht
    4.2 Schlüsselwörter zur Definition von Farben
    4.3 Schlüsselwörter zur Definition von Schnittobjekten
    4.4 sonstige Schlüsselwörter
5. Anhang
    5.1 Erkundung eines 3D-Fraktals
    5.2 Beispiele für die Wirkungsweise einiger Parameter
    5.3 Der Kreuzblick (zur echt dreidimensionalen Wahrnehmung eines Objektes)
    5.4 Die Initialisierungsdatei(en)


Webseite von Quat    English version

1. Einführung

Ein Screenshot - Quat in Aktion

Sinn und Zweck dieses Programmes ist das Berechnen von dreidimensionalen Fraktalen. Die berechneten Objekte sind frei im Raum schwebende, verwickelte, teigartige (und natürlich fraktale) "Klumpen" - im Gegensatz zu dem, was herkömmlicherweise im Zusammenhang mit Fraktalen als "dreidimensional" bezeichnet wird (eine bloße Uminterpretation der zweidimensionalen Daten nämlich).

Die Objekte können koloriert werden, indem durch eine Formel Koordinaten des Raumes (oder, in späteren Versionen, andere Parameter) mit Farben verknüpft werden. Die Palette der Farben kann aus bis zu 50 einzelnen Farben oder Farbverläufen bestehen.

Zusätzlich ist es möglich, Schnittebenen zu definieren. Es kann so der innere Aufbau der Fraktale dargestellt werden. Besonders interessant ist natürlich ein Schnitt mit der komplexen Ebene, man erhält als Schnittfigur das normale zweidimensionale Fraktal, das z.B. auch mit "Fractint" berechnet werden kann. Zusätzlich sieht man aber, wie verschiedene Regionen des zweidimensionalen Fraktals im dreidimensionalen Raum miteinander verknüpft sind.

Die Berechnung und Speicherung des Bildes erfolgt grundsätzlich in 24bit True-Color, die Anzeige während der Berechnung funktioniert hingegen auch in 256-Farben-Modi (allerdings in verminderter Qualität.)

Die von Quat berechneten Fraktale entsprechen genau den herkömmlichen, zweidimensionalen "Julia-Mengen", die so gut wie jedes Fraktalprogramm berechnen kann. (Die verfügbaren Iterationsformeln lauten xn+1 = xn2 - c und xn+1=cxn(1-xn); x0 ist der zu berechnende Bildpunkt) Um die dritte Dimension zu bekommen, verwendet Quat anstelle der komplexen Zahlen mit 2 Komponenten (Real- und Imaginärteil) sogenannte "Hamilton'sche Quaternionen". Sie sind eine Verallgemeinerung der komplexen Zahlen und bestehen aus 4 Komponenten (1 Realteil und 3 Imaginärteile). Setzt man die 2 zusätzlichen Imaginärteile Null, so hat man wieder die ganz normalen komplexen Zahlen. Mit den Quaternionen (daher übrigens der Name "Quat") wäre es also möglich, sogar vierdimensionale Fraktale zu berechnen, berechnet werden aber nur dreidimensionale. (Wenn jemand einen vierdimensionalen Monitor erfindet, erkläre ich mich dazu bereit, mein Programm entsprechend umzuändern... :-) )

Die Berechnung einer wirklich dreidimensionalen Ansicht (3D-Stereo) ist möglich. Ohne Hilfsmittel wie 3D-Brillen kann das Fraktal als echt dreidimensionales Objekt gesehen werden.

Als Ausgabeformat wird das PNG-Format verwendet. Es ist der Nachfolger von GIF und bietet ebenso wie GIF eine Komprimierung der Bilddaten ohne Qualitätsverlust (JPEG komprimiert zwar besser, aber die Bildqualität leidet darunter). Nähere Informationen über PNG: http://www.cdrom.com/pub/png. Da PNG das Speichern applikationsspezifischer Daten erlaubt, speichert Quat sämtliche zur Erzeugung eines Bildes nötigen Werte innerhalb des PNG-Bildes.

Quat verwendet zum Speichern der PNG-Bilder eine Library namens "ZLIB". Diese Library ist eine Komprimierungs-Library und hat nichts mit Fraktalberechnung zu tun. Sie wurde von Jean-loup Gailly und Mark Adler geschrieben. Nähere Informationen zu ZLIB: http://www.cdrom.com/pub/infozip/zlib

Quat ist freie Software. Sie können es unter den Bedingungen der GNU General Public License, wie von der Free Software Foundation herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2 der Lizenz oder (wenn Sie es wünschen) jeder späteren Version.

Die Veröffentlichung dieses Programms erfolgt in der Hoffnung, daß es Ihnen von Nutzen sein wird, aber OHNE JEDE GEWÄHRLEISTUNG - sogar ohne die implizite Gewährleistung der MARKTREIFE oder der EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. Details finden Sie in der GNU General Public License.

Sie sollten eine Kopie der GNU General Public License zusammen mit diesem Programm erhalten haben. Falls nicht, schreiben Sie an die Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

Ein besonderer Dank an Max Schwoerer für die Klärung einiger rechtlicher Fragen und an Oliver Siemoneit für die Hilfe bei der englischen Übersetzung.
Vielen Dank an Larry Berlin (lberlin@sonic.net) für seine Hinweise zu Themen wie 3D-Stereo-Ansicht, für seine vielfältigen Ideen zur Verbesserung des Programms (speziell der Benutzeroberfläche), für das Testen der Vorversionen von Quat 0.92, und nicht zuletzt für das Titelbild von Quat, das er kreiert hat!
Larry Berlin bietet ein großartiges 3D-Ezine an (http://3dzine.simplenet.com/3dzine.html) und hat vor, dort eine Galerie von Bildern zu zeigen, die er auf der Grundlage der von Quat berechneten Objekte erstellt hat. Ich hatte Gelegenheit, einige Beispiele zu sehen. Ist wirklich einen Besuch wert!
Dank auch an Eva-Maria von Garrel für's Testen.

1.1 Was ist neu?

Version 0.92:

Version 0.91: (8.2.1998)

Version 0.90b: (14.9.97)

Version 0.90: (29.7.97)
Erste veröffentlichte Version.

1.2 Systemvoraussetzungen

Im Prinzip keine, wenn Sie ANSI-C-Code compilieren können... :-)

Die Voraussetzungen für die vorcompilierten Versionen von Quat:

Im übrigen ist der Source-Code von Quat verfügbar, so daß man sich für jedes System, das ANSI-C compiliert, eine Textversion herstellen kann (ohne grafische Ausgabe, minimaler Speicherbedarf). Sinnvoll ist dies z.B. für UNIX-Systeme, bei denen ein GNU-C-Compiler meist schon im Betriebssystem integriert ist.

1.3 Bugs und Adressen

Falls Sie Verbesserungsvorschläge haben, oder einen Bug berichten wollen, können Sie eine Email an mich (dirk.meyer@studbox.uni-stuttgart.de) schicken. Ich würde mich sehr über Feedback freuen, besonders, weil diese Version eine Beta-Version ist und sicher noch voller Bugs steckt. Falls Sie Lust haben und programmieren können, können Sie mir auch C-Code schicken. Ich werde ihn in zukünftigen Versionen einbauen. (Und natürlich Sie als Autor erwähnen!)
Mir schwebt dabei das große Vorbild "Fractint" vor, vielleicht finden sich ja auch hier ein paar Enthusiasten!
Meine herkömmliche Adresse ist:
Dirk Meyer
Marbacher Weg 29
D-71334 Waiblingen
Germany
Die neueste Version (und der Source-Code) von Quat sollte immer über http://wwwcip.rus.uni-stuttgart.de/~phy11733 zu beziehen sein.

2. Generelle Hinweise

2.1 Mathematische Grundlagen zur Berechnung von Fraktalen

Kernstück der Berechnung von Fraktalen ist eine iterative Formel. (Es gibt noch andere Arten von Fraktalen, am häufigsten anzutreffen ist jedoch die hier beschriebene Sorte). "Iterativ" bedeutet, daß der Wert, den die Formel ergab, im nächsten Schritt wieder in die Formel eingesetzt wird und so zu einem neuen Wert führt, der wiederum eingesetzt wird, und so weiter. Einen solchen Schritt nennt man eine Iteration. Als Startwert wird der Punkt benutzt, der berechnet werden soll.

Ein Punkt in diesem Zusammenhang ist eine komplexe Zahl (im Falle eines zweidimensionalen Fraktals). Eine komplexe Zahl besteht aus 2 voneinander unabhängigen Komponenten, die man Real- und Imaginärteil nennt. Ist der Imaginärteil Null, so entsprechen die komplexen Zahlen den reellen (also z.B. 1.23324, -23, ...). Zur Kennzeichnung des Imaginärteils dient der Buchstabe "i", wobei gilt: i*i=-1. (Hieran sieht man, daß "i" keine reelle Zahl sein kann, denn keine reelle Zahl im Quadrat ergibt -1.)
Eine komplexe Zahl c schreibt sich also allgemein so: c = a + i*b
Hierbei ist a der Real- und b der Imaginärteil. In zweidimensionalen Fraktalprogrammen identifiziert man den Realteil mit der x-Koordinate auf dem Schirm, den Imaginärteil mit der y-Koordinate.

Quat benötigt zur Berechnung seiner dreidimensionalen Fraktale Zahlen, die aus noch einer Komponente mehr bestehen, die dann mit der z-Koordinate gleichgesetzt wird. Solche Zahlen gibt es nicht, es gibt jedoch welche mit 4 Komponenten: Die Hamilton'schen Quaternionen (auch hyperkomplexe Zahlen genannt). Sie besitzen einen Realteil und 3 imaginäre Teile. Die Bezeichnungen für diese Teile lauten e, j, k und l. "e" entspricht dem Realteil, "j" dem Imaginärteil der komplexen Zahlen. Sind also k- und l-Teil Null, so haben wir wieder die alten komplexen Zahlen. Zwischen e, j, k und l bestehen bestimmte Rechenregeln für die Multiplikation. (Hier besteht ein Unterschied zwischen Quaternionen und hyperkomplexen Zahlen, der uns aber nicht interessieren muß. Quat verwendet Quaternionen, der Einfachheit halber werden beide Begriffe im Folgenden aber austauschbar verwendet.)

4 Komponenten würden sogar für vierdimensionale Fraktale ausreichen, aus naheliegenden praktischen Beschränkungen (s. oben) und der Beschränktheit des menschlichen Wahrnehmungsvermögens (also nicht aus Unfähigkeit des Programmierers...) kann Quat "nur" dreidimensionale Fraktale erzeugen. Die zusätzliche 4. Dimension (4. Komponente) wird auf einen konstanten Wert gesetzt, der über den Parameter "lvalue" in der OBJ-Datei festgelegt wird (Versionen mit Benutzeroberfläche: Im Object Editor). Diese Vorgehensweise erzeugt einen dreidimensionalen Schnitt aus einem vierdimensionalen Fraktal, analog zum zweidimensionalen Schnitt, den gewöhnliche Fraktalprogramme aus den von Quat berechneten dreidimensionalen Fraktalen machen.

Zurück zu unserer Iterationsformel. Quat benutzt eine der folgenden Formeln: xn+1 = xn2 - c oder xn+1 = cxn(1-xn)
x0 ist der Startwert (=Punkt, der berechnet werden soll)
"n" ist ein Abzählindex, mit dem die "x" durchnumeriert werden (n=0,1,2,3...). Der in der Formel auftretende Wert "c" ist wiederum eine hyperkomplexe Zahl, die während der ganzen Berechnung konstant bleibt und in der OBJ-Datei/im Object Editor als Parameter "c" festgelegt wird. "c" bestimmt die Form des Fraktals.

Man stellt fest, daß die durch die Iterationsformel definierte Folge der xn drei verschiedene Verhaltensweisen an den Tag legt:

  1. Sie geht gegen einen festen Wert (z.B. gegen Null)
  2. Sie pendelt periodisch zwischen mehreren Werten
  3. Sie wird immer größer und geht damit gegen Unendlich.

Das von Quat gezeichnete Objekt ist die Menge aller Punkte (= Zahlen) x0, für die die durch die Formel definierte Folge nicht gegen Unendlich geht. (Die also Verhalten 1. oder 2. zeigt).

Diese Formulierung ist noch nicht ganz exakt: Es besteht das praktische Problem, daß ein Computer die Iteration nicht ad infinitum ausführen kann, um zu sehen, ob die Folge sich einpendelt oder nicht. (Das liegt an der Beschränktheit der menschlichen Lebensdauer, wiederum nicht an der Unfähigkeit des Programmierers :-)  ). Deshalb wird nach einer gewissen Anzahl von Iterationen abgebrochen. Die maximale Zahl von Iterationen wird im Object Editor/OBJ-Datei durch den Parameter "maxiter" festgelegt. Wie wird nach Ablauf dieser maxiter Iterationen nun festgelegt, ob die Folge gegen unendlich geht oder nicht? Dazu dient der Wert "bailout" (Benennung frei nach "Fractint"). Wurde dieser Wert im Laufe der maxiter Iterationen überschritten, so wird angenommen, daß die Folge gegen unendlich geht.

Nun können wir das berechnete Objekt ganz präzise beschreiben: Es ist die Menge aller Punkte (= Zahlen) x0, für die die durch die Iterationsformel definierte Folge der xn nach höchstens maxiter Iterationen den Wert bailout nicht überschritten hat. (Wie kompliziert doch schöne Formen mathematisch zu beschreiben sind... Andererseits: Wie schön doch Mathematik sein kann!)

Zur Beruhigung: Auch wer das alles nicht versteht oder wen's ganz einfach nicht interessiert, der kann trotzdem schöne Bilder berechnen.

2.2 Koordinatensysteme und Festlegung der Bildebene

Was wir bis jetzt haben, ist ein Objekt im Quaternionen-Raum (Q-Raum). Was wir noch nicht haben, ist ein Beobachter, der sich dieses Objekt ansieht. Das soll heißen: Wir müssen das Objekt noch auf den Monitor projizieren. Dazu müssen wir eine Bildebene im Q-Raum definieren, die den Bildschirm repräsentiert. Wie also diese Bildebene das Objekt "sehen" würde, so wird es auf dem Monitor dargestellt.

Es ergeben sich so 2 verschiedene Koordinatensysteme: Einmal das "darzustellende" System (der Q-Raum), außerdem das "darstellende" Koordinatenystem (Bildebene, Monitor).

Der Q-Raum wird aufgespannt durch 3 Achsen, die im Folgenden mit e, j und k bezeichnet werden, analog zu den Komponenten der hyperkomplexen Zahlen (der l-Teil wird auf einen konstanten Wert gesetzt, s.o.). Die e-Achse ist also die reelle Achse ("Zahlenstrahl"), die von der e- und j-Achse aufgespannte Ebene die komplexe Ebene, in der 2D-Fraktalprogramme ihre Fraktale berechnen.

Auf der Bildebene liegen zwei Achsen des Bildkoordinatensystems, die x- und y-Achse heißen und der horizontalen und der vertikalen Achse des Monitors entsprechen. Außerdem gibt es eine z-Achse, die senkrecht auf der Bildebene steht und so die Richtung anzeigt, in der man auf das Fraktal sieht.

Da sich die fraktalen Objekte immer um den Ursprung im Q-Raum herum ansiedeln, ist folgende Art der Konstruktion der Bildebene naheliegend. In der Initialisierungsdatei wird dazu ein Punkt im Q-Raum festgelegt, der "viewpoint". Die Bildebene geht durch "viewpoint" und steht senkrecht auf dem Ortsvektor "viewpoint" ("viewpoint" hat also eine doppelte Bedeutung: Aufpunkt und Normalenvektor der Bildebene). Durch "viewpoint" ist so schon die z-Achse des Bildkoordinatensystems festgelegt. Im Folgenden bewegen wir uns nur noch auf der Bildebene.

Nun wird von dieser Ebene ein rechteckiger Ausschnitt genommen (= das Sichtfenster), der auf der Ebene so orientiert wird, daß 2 gegenüberliegende Seiten des Rechtecks parallel zur Projektion des "up"-Vektors (s.u.) auf die Bildebene sind. Die Richtung dieser Projektion wird y-Richtung genannt und entspricht nachher der vertikalen Richtung auf dem Monitor. Die horizontale Richtung heißt x-Richtung und entspricht den anderen beiden Seiten des Rechtecks. Der "up"-Vektor definiert also, wo oben ist. Damit sind also schon die Richtungen der x- und y-Achse festgelegt.

Die Diagonalen dieses Sichtfensters schneiden sich im "viewpoint" (das heißt, daß der "viewpoint" in der Mitte des Sichtfensters/Bildschirms liegt). Nun wird das Sichtfenster um den "viewpoint" herum zentrisch gestreckt ("skaliert"), und zwar so, daß die in x-Richtung liegende Seite hinterher die Länge "lxr" im Q-Raum hat (s. Parameter "lxr"), und das Verhältnis von x/y dem gewählten Auflösungsverhältis (siehe "resolution") entspricht. (für verzerrungsfreie Darstellung). Die Basisvektoren des Sichtfensters (gewonnen aus der x- und y-Richtung) haben den Betrag 1. Nun sind wir im Prinzip fertig. Das Bildkoordinatensystem ist vollständig definiert.

Um alle möglichen Lagen des Bildschirmrechtecks erreichen zu können (bisher dreht sich alles um den Ursprung), wird zum Schluß die Bildebene um die bei "Move" angegebenen Werte in x- und y-Richtung (in ihrem eigenen Koordinatensystem) verschoben.

2.3 ZBuffer

Diese Neuerung von Quat 0.92 ermöglicht es, die langsame fraktale Berechnung des Objekts von der relativ schnellen Darstellung zu trennen. Quat berechnet dazu einen sogenannten ZBuffer, in dem die Form des Objektes vom Betrachtungsstandpunkt aus gespeichert wird.
Man kann nun gewisse Parameter (Lichtquelle, Farbpalette, Farbformel, Phong Highlight und das Umgebungslicht) noch verändern, und aus dem ZBuffer schließlich ein fertiges Bild erzeugen, was relativ schnell geht.


Grafik 1: Verschiedene Wege zum fertigen Bild


ZBuffer eröffnen ein weites Feld an Experimentiermöglichkeiten, man kann die beste Darstellung des Objektes durch Probieren herausfinden.
ZBuffer haben die Dateiendung "ZPN". In einem ZBuffer ist der volle Satz an Parametern gespeichert, wie auch in jedem Bild (PNG). ZBuffer sind ganz normale PNG-Dateien, sie enthalten bloß kein Bild. Manche Grafikprogramme erkennen sie sogar und zeigen sie problemlos an, wenn man sie öffnet, andere machen es notwendig, die Endung in PNG umzubenennen. Ob das direkte Anzeigen allerdings einen Sinn hat, weiß ich nicht, da man mit den in den Dateien gespeicherten Daten in der Regel wenig anfängt.

3. Bedienung

3.1 Benutzen der Version mit Benutzeroberfläche (Windows, X Window System)

Starten von Quat:

Beschreibung der Menüpunkte:

"Image"-Menü:

Image | Open...
(Bild | Öffnen). Öffnet ein Bild (PNG-Datei), zeigt es an und lädt die Parameter, die in ihm gespeichert sind. Abschließend zeigt Quat an, wie weit das Bild bereits berechnet ist.
Möglicherweise erhalten Sie die Fehlermeldung "PNG file has no QUAT chunk". Das passiert, wenn Sie versuchen, eine PNG-Datei zu öffnen, die von einem anderen Programm geschrieben wurde. In diesem Fall kann Quat die fraktalen Parameter nicht lesen.
Hinweis: In 256-Farben-Modi sollten Sie ein spezielles Bildbetrachtungsprogramm verwenden, das vermutlich mehr aus der begrenzten Farbzahl herausholen kann. "Graphic Workshop for Windows 1.1u" oder "Paintshop Pro 3.11" unterstützen PNG-Bilder (Windows), auch "XV 3.10a" mit dem PNG-Patch (X).

Image | Close
(Bild | Schließen). Schließt das Bild, läßt aber die dazugehörigen Parameter im Speicher. Wenn Sie einige Parameter eines Bildes ändern wollen, müssen Sie erst das Bild schließen, dann die Parameter verändern und als letzten Schritt das Bild neu berechnen.

Image | Save
(Bild | Speichern). Speichert das Bild (PNG) unter dem Namen, der in der Titelzeile angezeigt wird. Oft ist dieser Name computergeneriert mit einer Nummer am Ende.
Alle Parameter, die benötigt werden, um das Bild neu zu berechnen, werden zusammen mit dem Bild gespeichert.

Image | Save As...
(Bild | Speichern unter). Speichert das Bild wie unter "Image | Save" beschrieben, bloß mit einem benutzerdefinierten Namen. Den Namen können Sie in dem Dialog eingeben, der erscheint, nachdem Sie diesen Menüpunkt angewählt haben.

Image | Adjust Window
(Bild | Fenster einstellen). Setzt die Größe des Fensters entsprechend der Bildgröße (solange es auf den Bildschirm paßt).

Image | About
(Bild | Über). Zeigt Informationen zu Quat an.

Image | Exit
(Bild | Beenden). Beendet Quat.

"Calculation"-Menü:

Calculation | Start/Resume an image
(Berechnung | Starten/Fortsetzen eines Bildes). Beginnt die Berechnung eines Bildes unter Benutzung der aktuellen Parameter (siehe "Parameters"-Menü) oder setzt eine unterbrochene Berechnung fort.
Wenn ein ZBuffer geöffnet ist (der vollständig berechnet sein muß), können Sie ihn mit diesem Menüpunkt zu einem Bild machen (siehe Abschnitt 2.3).
Ein Bild ist ein fraktales Object, das beleuchtet und gefärbt ist, im Gegensatz zu einem ZBuffer.

Calculation | Start/Resume a ZBuffer
(Berechnung | Starten/Fortsetzen eines ZBuffers). Beginnt die Berechnung eines ZBuffers unter Benutzung der aktuellen Parameter (siehe "Parameters"-Menü) oder setzt eine unterbrochene Berechnung fort.
Ein ZBuffer hat die Form eines fraktalen Objektes, aber es ist nicht beleuchtet oder eingefärbt. Die Berechnung eines ZBuffers erledigt den langsamen Teil der ganzen Berechnung, den ZBuffer in ein Bild zu verwandeln ist relativ schnell. Der Vorteil von ZBuffern ist, daß man noch einige Parameter, die die Form des Fraktals nicht beeinflussen (Beleuchtung und Farbe), ändern kann und dann recht schnell ein Bild berechnen kann. Wenn Sie das Aussehen des Fraktals nicht mögen, schließen Sie einfach das Bild, wodurch Sie wieder zum ZBuffer zurückgelangen. Mehr über ZBuffer in Abschnitt 2.3.

Calculation | Stop
(Berechnung | Stop). Unterbricht eine laufende Berechnung (sowohl die eines Bildes, als auch eines ZBuffers). Sie können die Berechnung fortsetzen, siehe die beiden Menüpunkte oben.

"Parameters"-Menü:

Parameters | Reset
(Parameter | Zurücksetzen). Setzt alle Parameter zurück auf ihre Vorgabewerte. Wenn Sie mit diesen Werten ein Bild berechnen, erhalten Sie eine Kugel.

Parameters | Read from INI...
(Parameter | Lies aus INI). Liest die Parameter ein, die nötig sind, um ein Bild zu erstellen. Die Werte werden vorher nicht auf die Vorgabewerte zurückgesetzt! (Benutzen Sie "Reset", um das zu machen).
Die INI-Datei kann mit "Save As" oder mit einem Texteditor erstellt worden sein. Eine INI-Datei beinhaltet die Daten, die nötig sind, um ein Bild zu generieren. Sie können ebenso eine COL-Datei laden, die vorher mit dem Color Editor gespeichert wurde.

Parameters | Read from PNG...
(Parameter | Lies aus PNG). Alle Daten zur Bilderzeugung werden mit dem Bild selbst mitgespeichert (wie es die PNG-Spezifikation erlaubt). Dieser Menüpunkt liest die Daten aus dem Bild wieder ein, um ein neues zu erzeugen oder die Parameter zu editieren.

Parameters | Save As...
(Parameter | Speichern unter). Speichert die Parameter in einer INI-Datei, die eine einfache Textdatei ist und mit einem Texteditor bearbeitet werden kann. Dieser Befehl ist nützlich, wenn Sie das Bild mit der Textversion von Quat berechnen wollen. (Die Textversion benutzt INI-Dateien, um die Parameter zu erhalten, die sie benötigt).

Die Editoren (in denen die Parameter verändert werden können):

Parameters | Object Editor:
Es öffnet sich ein Dialog, der folgendermaßen aussieht (hier gezeigt: X-Window-Version mit KDE Window Manager):

Bild des Object Editors

In diesem Dialog können Sie die fraktalen Daten des Objektes angeben. Diese Daten bestimmen die Gestalt des Fraktals. Für folgende Schlüsselwörter können Werte eingegeben werden: "maxiter", "lvalue", "bailout" und "c". (Siehe deren Beschreibungen in Abschnitt 4.1)
Darüberhinaus bietet der Editor die Möglichkeit, die Auswirkungen von Parameteränderungen sofort zu begutachten (sofort ... Pentium oder höher/ nach einigen Sekunden bei einem 486). Es gibt ein "Mandel Preview"-Fenster (="Mandel Vorschau"), in dem die Mandelbrotmenge (das Apfelmännchen) angezeigt wird (oder genauer, einen zweidimensionalen Schnitt aus der vierdimensionalen Verallgemeinerung der Mandelbrotmenge). Sie kann als Landkarte für "Julia-Mengen" (den Objekten, die Quat berechnet) angesehen werden. Das rote Kreuz markiert den gewählten Punkt "c". Jeder Punkt "c" erzeugt eine andere Julia-Menge. Punkte, die innerhalb der Mandelbrot-Menge (also dem schwarzen Gebiet) liegen, führen zu verbundenen Julia-Mengen, im anderen Fall zu unterteilten.
Sie können mit der Maus an eine beliebige Stelle des "Mandel-Preview"-Fensters klicken (oder auch ziehen), um das rote Kreuz zu verschieben. Die ersten beiden Teile des Parameters "c" werden dementsprechend aktualisiert.
Ein Klick mit dem rechten Mausknopf in das Mandel-Preview-Fenster aktualisiert die Figur. Das ist notwendig, wenn einer der Parameter "bailout", "maxiter" oder die letzen beiden Teile des Parameters "c" geändert wurden.
In der X-Window-Version zeigt ein roter Rahmen um die Preview-Fenster an, daß ein Neuzeichnen notwendig ist.
Die sechs Buttons unter dem Mandel-Preview dienen der Navigation in der Mandelbrotmenge. Der Bereich, der angezeigt wird, kann verschoben und gezoomt werden.
Der oberste Button "up" bewegt den sichtbaren Ausschnitt nach oben, der unterste ("down") nach unten. Der Button ganz links nach links, der rechts nach rechts. Die beiden Buttons in der Mitte zoomen in die Mandelbrotmenge hinein (+) und heraus (-).
Das "Julia Preview"-Fenster (="Julia Vorschau") zeigt zweidimensionale Schnitte oder sogar eine dreidimensionale Vorschau des zu generierenden Objektes. Wenn Sie den "2D-Preview"-Button drücken, wird die enstprechende Julia-Menge zu den aktuellen Einstellungen der Parameter berechnet. Mit der Laufleiste "3rd-dim. Intersec." ist wählbar, welcher Schnitt mit dem dreidimensionalen Objekt angezeigt wird. Ändern Sie ihn und drücken Sie "2D-Preview", so wird der neue Schnitt angezeigt. Wenn Sie diese verschiedenen Schnitte im Geiste übereinander stapeln, erhalten Sie eine ungefähre Vorstellung davon, wie das dreidimensionale Objekt aussehen wird.
Wenn Sie den Button "3D-Preview" drücken, bekommen Sie ein dreidimensionales Bild, wie Quat es wirklich berechnen würde. Allerdings ist der Aufbau relativ langsam, also empfiehlt es sich, zuerst mit dem 2D-Preview abzuchecken, ob das Fraktal annähernd Ihren Vorstellungen entspricht, und solange daran herumzubasteln, bis es das tut, und dann die 3D-Vorschau zu verwenden. Die Check-Box "use own view" (="Benutze eigene Ansicht") entscheidet im 3D-Preview darüber, ob eine Standard-Sicht des Fraktals gezeigt werden soll, oder ob die Parameter verwendet werden sollen, die in den anderen Editoren (Ansicht, Farben, ...) eingestellt sind.

Parameters | View Editor:
Der Editor sieht folgendermaßen aus (Windows-Version):

Bild des View-Editors

In diesem Dialog wird definiert, wie das Objekt gesehen werden soll. Die Bildebene, auf die das Fraktal projiziert wird, wird durch folgende Parameter festgelegt: "viewpoint", "up", "move", "lxr" und "interocular". Die Lichtquelle ("light") wird hier ebenfalls angegeben. (Siehe Beschreibungen in Abschnitt 4.1).
Neben der Eingabezeile für "interocular" ist ein Winkel angegeben. Es ist der Winkel zwischen dem "Viewpoint" für das linke Auge, dem Ursprung (bevor MOVE angewendet wird) und dem "Viewpoint" für das rechte Auge. Wenn Sie ein 3D-Stereo-Paar generieren wollen, sollte dieser Winkel zwischen 3 und 8 Grad betragen. Wenn "interocular" Null ist (und damit auch der Winkel), wird eine 2d-Projektion des fraktalen Objektes erzeugt.
Da es langweilig wäre, wenn man nur Werte eingeben könnte, die man auch in einem Texteditor angeben könnte (INI-Datei), befinden sich noch drei Ansichten des Sichtpunktes und der Bildebene in diesem Dialog. (Man sieht ihn von oben "from above", von der Seite "from beside" und von vorne "from front"). Die schwarzen Pfeile sind die Achsen im Quaternionen-Raum (bzw. im dreidimensionalen Unterraum, der durch "lvalue" definiert wird). "e" ist die ganz normale reelle Zahlenachse, "j" die imaginäre Achse (wie bei den komplexen Zahlen; diese beiden werden bei jedem 2D-Fraktalprogramm benutzt) und "k" ist die Achse in die dritte Dimension (Es gibt hier keine "l"-Achse, da der l-Wert konstant gehalten wird ["lvalue"]). Die Pfeile deuten die Richtung der positiven Zahlen an, die Länge der Pfeile entspricht der Länge 2 im Q-Raum.
Das kleine blaue Rechteck markiert den Sichtpunkt ("viewpoint"), das grüne Rechteck stellt die Bildebene dar. Wenn man in das blaue Rechteck klickt, kann man durch Ziehen der Maus den Sichtpunkt verschieben. Manche Positionen für den Sichtpunkt sind nicht definiert (wenn er (0,0,0) ist oder wenn er so liegt, daß der "up"-Vektor rechtwinklig zur Bildebene liegt.)
Der kleine gelbe Kreis ist der Ursprung des Bildkoordinatensystems (= der linke obere Punkt auf dem Bildschirm)

Parameters | Color Editor:

Bild des Color-Editors

Hier können Farben (oder besser, Farbverläufe) definiert werden. Links ist eine Laufleiste zu sehen, die dazu dient, denjenigen Farbverlauf auszuwählen, den man editieren möchte. Daneben sind zwei Buttons "Add" und "Del" (Hinzufügen und Löschen). "Add" fügt eine neue Farbe vor der aktuellen Position in der Palette hinzu, "Del" löscht die aktuell ausgewählte. Es muß mindestens eine Farbe existieren, aber nicht mehr als 30. Für jeden Farbverlauf können Sie eine Startfarbe ("Color 1"), eine Endfarbe ("Color 2") und eine Gewichtung angeben. Die Gewichtung gibt an, welcher Anteil an der gesamten Palette der Farbverlauf ausmacht. Dieser Wert darf nicht Null sein. (Siehe auch Abschnitt 4.2) Wenn Sie die Buttons "Sel" neben der jeweiligen Farbe anklicken, erhalten Sie den standardmäßigen Windows/KDE-Dialog, um eine Farbe auszuwählen. Falls Sie anstatt eines Farbverlaufs nur eine einfache Farbe definieren wollen, setzen Sie beide Farben des Farbverlaufs (Color 1 und Color 2) auf dieselben Werte.
Mit "Copy" wird die jeweilige Farbe in die Zwischenablage kopiert (nicht in die globale von Windows/X, sondern in das Feld rechts oben im Dialog), mit "Paste" können Sie die jeweilige Farbe durch die Farbe in der Zwischenablage ersetzen.
Unten im Dialog befindet sich eine Leiste, in der die ganze Palette als Vorschau dargestellt ist. Diese Leiste ist gedacht für High- oder True-Color-Modi, hat Ihr Video-Modus weniger Farben, so ist die Vorschau nicht besonders brillant...
Der jeweils gerade gewählte Farbverlauf wird durch einen schwarzen Rahmen gekennzeichnet.
Darunter ist das Eingabefeld in das Sie die Farb-Formel eintragen können, entweder direkt, oder durch Anklicken einer vordefinierten Formel. (Beschreibung siehe Schlüsselwort "colorscheme").
Wenn Sie den "Save As"-Button klicken, können Sie die Paletteninformationen in einer COL-Datei abspeichern, die mit "Read from INI" wieder eingelesen werden kann.

Parameters | Intersection Editor:

Bild des Intersection Editors

Wird benutzt, um Schnittebenen zu definieren. Die Laufleiste links hat genau denselben Zweck wie beim Farbeditor oben: das zu bearbeitende Objekt auszuwählen. Die Buttons "Add" und "Del" funktionieren ebenfalls wie oben, der eine fügt eine neue Schnittebene hinzu, der andere löscht die gerade gewählte. Es können zwischen 0 und 20 Schnittebenen eingerichtet werden. Eine Ebene wird definiert durch den Normalenvektor (der in den Halbraum zeigt, der vom Objekt weggeschnitten wird), der nicht Null sein darf, und einem Aufpunkt auf der Ebene. (Siehe auch Abschnitt 4.3)

Parameters | Other Parameters:

Bild des "Other Parameters"-Dialogs

Die anderen Parameter sind: "resolution", "phong", "ambient" und "antialiasing". Beschreibung des ersten siehe Abschnitt 4.4, der letzten drei siehe Abschnitt 4.1.
In diesem Dialog befinden sich fünf Buttons, die als Abkürzung für bestimmte Auflösungen dienen. Wenn Sie einen davon drücken, wird die Auflösung auf die angegebenen Werte gesetzt.
Windows-Version: Sie können einstellen, alle wieviel Punkte das Bild während der Berechnung aktualisiert wird. Wählen Sie einen hohen Wert, so ist die Berechnung ein wenig schneller, allerdings werden von Quat seltener Events bearbeitet, d.h. z.B., daß Quat seltener Eingaben bearbeitet.
Die Zeit, die zur Berechnung des Bildes bisher benötigt wurde, ist hier ebenfalls angegeben.

"ZBuffer"-Menü:

Zu ZBuffern lesen Sie bitte Abschnitt 2.3. Die Menüpunkte in diesem Menü dienen dem Laden, Speichern, Speichern Als und Schließen eines ZBuffers.

3.2 Weitere Features von Quat in Windows 95

Sollen INI-Dateien benutzt werden, um Quat mit den nötigen Informationen über das zu generierende Bild zu füttern, so kann die Bedienung von Quat vollständig über den Explorer abgewickelt werden. Dateien mit der Endung "ini" sind standardmäßig mit dem Notizblock/Editor verknüpft. Ein Doppelklick auf eine ini-Datei öffnet sie also zum Editieren. Im Kontextmenü (rechte Maustaste auf Datei) können Sie zusätzlich einen Menüpunkt anlegen, mit dem Sie die Berechnung dieser ini-Datei starten. Gehen Sie dazu wie folgt vor:

Sie können jetzt, wenn Sie im Explorer eine ini-Datei mit der rechten Maustaste anklicken, im dann erscheinenden Context-Menü "Berechnen" auswählen, und Quat beginnt sofort mit der Berechnung des in der Datei beschriebenen Fraktals.
Ebenso können Sie für den Dateityp "PNG" einen Vorgang "Berechnung fortsetzen" einrichten, damit sie halbfertige Bilder weiterrechnen können, Sie müssen dann nur zwei Mausklicks ausführen. Unter Umständen ist der Dateityp "PNG" noch nicht registriert, Sie müssen ihn evtl. neu anlegen.
Eine weitere Möglichkeit des komfortablen Arbeitens ist es, einen Link zu Quat auf dem Desktop anzulegen. Sie können, wenn Sie das gemacht haben, einfach eine ini- oder png-Datei aus dem Explorer auf das "Quat"-Symbol auf den Desktop ziehen und Quat startet sofort die Berechnung, bzw. setzt sie fort. Um den Link anzulegen, gehen Sie mit dem Explorer in das Verzeichnis (den Ordner), in das Sie Quat auf ihrer Festplatte kopiert haben. Ziehen Sie "Quat.exe" (oder nur "Quat") auf den Desktop. Windows legt an der Stelle, an der Sie die Maustaste auf dem Desktop losgelassen haben, einen Link an.

3.3 Benutzen der Textversion

(Gilt nicht für die Versionen mit Benutzeroberfäche.)
Quat versteht die folgenden Parameter, die ihm übergeben werden:

-i <INI-Datei> Berechnet ein Bild aus einer INI-Datei. (INI-Dateien werden benutzt, um Quat mit den Werten zu füttern, die das Fraktal und die Ansicht, etc., bestimmen.)
-z <INI-Datei> Berechnet einen ZBuffer (Dateityp ZPN) aus einer INI-Datei
-i <ZPN-Datei> Erzeugt ein Bild unter Verwendung eines vorher berechneten ZBuffers. (Ist natürlich wesentlich schneller als die Erzeugung aus einer INI-Datei.)
-i <ZPN-Datei> <INI-Datei>  Erzeugt ein Bild aus einem ZBuffer, ersetzt jedoch bestimmte Parameter (z.B. Farbgebung) durch die in der INI-Datei angegebenen Werte.
-p <PNG- oder ZPN-Datei> Liest die Parameter, mit denen das betreffende Bild/ZBuffer berechnet wurde und schreibt sie in eine INI-Datei.
-c <PNG- oder ZPN-Datei> Setzt die Berechnung eines unfertigen Bildes oder ZBuffers fort. Die INI-Datei, aus der das Bild/ZBuffer generiert wurde, wird nicht mehr benötigt.
-h Anzeigen einer Kurzinformation

Ein Aufruf sieht also beispielsweise so aus:

quat -i test.ini

Eine Berechnung wird abgebrochen, indem

4. Aufbau der Initialisierungsdatei(en)

Wenn Sie eine Version mit Benutzeroberfläche (ab jetzt VmB angekürzt) benutzen, können Sie diesen Abschnitt 4 überspringen, doch die Unterabschnitte 4.1 - 4.4 sind wieder wichtig, da sie die Beschreibung der Parameter enthalten, die in den Editoren eingestellt werden.
In Textdateien werden die zum Beginnen einer Berechnung notwendigen Parameter angegeben. (Wie schon mehrfach gesagt: Ist die Berechnung ersteinmal begonnen, sind sie nicht mehr notwendig.) Ihr Aufbau ist relativ simpel: Das Doppelkreuz (#) dient als Kommentarzeichen. Alles was in der selben Zeile hinter dem Doppelkreuz steht, wird ignoriert. Ansonsten beginnt eine Zeile mit einem Schlüsselwort, dem ein oder mehrere Parameter folgen. Die Parameter und das Schlüsselwort müssen in ein und derselben Zeile stehen und durch Leerzeichen voneinander getrennt sein. Es gibt folgende Arten von Parametern:
int: Ganzzahlen (wie 1, -1, 0, 2, 3, 1001, ...)
float: Fließkommazahlen (wie -0.2353, 21.21324, 0.001, ...)
strings: Zeichenketten
Wird ein Schlüsselwort nicht verwendet, so wird ein Vorgabe-Wert eingesetzt. Dem Programm sind einige Beispiel-Dateien beigefügt, sie mal anzusehen und zu berechnen lohnt sich, da vieles beim Anwenden direkt klar wird, was hier umständlich beschrieben ist.

4.1 Schlüsselwörter zur Definition von fraktalem Objekt und der Ansicht

4.2 Schlüsselwörter zur Definition von Farben

Eine Farbe bei Quat wird repräsentiert durch ein Red-Green-Blue-Tripel, wobei Red, Green und Blue Werte von 0.0 bis 1.0 annehmen können.
In Verbindung mit anderen Farben (also in einer Palette) benötigt jede Farbe noch eine Art Gewichtung, die bestimmt, welchen Anteil an der Palette diese Farbe ausmacht. Gleiches gilt für einen Farbverlauf. Die Gewichtungen aller Farben/Verläufe werden von Quat summiert, um festzulegen, was 100% entspricht.
Es können mehrere Farben und Farbverläufe definiert werden, die zusammen die Palette ausmachen. Die Farbe, die als erstes angegeben wird, entspricht dem Wert "0.0", die letzte Farbe dem Wert "1.0". Das wird später wichtig werden, wenn es darum geht, wie man über eine mathematische Formel eine Farbe ansteuert.
Die Schlüsselwörter:

4.3 Schlüsselwörter zur Definition von Schnittobjekten

Es können Objekte (bis jetzt nur Ebenen) definiert werden, die mit dem fraktalen Objekt geschnitten werden.
Schlüsselwörter:

4.4 sonstige Schlüsselwörter

5. Anhang

5.1 Erkundung eines 3D-Fraktals

Der folgende Abschnitt beschreibt, wie man "Fractint", ein sehr gutes (2D-)Fraktalprogramm, dazu benutzen kann, neue Objekte zu entdecken. Die Vorgehensweise ist die selbe wie die im "Object Editor" verwirklichte (anhand der Mandelbrot-Menge einen vielversprechenden Punkt auswählen und 2D-Schnitte der Julia-Menge anfertigen). Für Benutzer der Benutzeroberflächen-Version ist der Abschnitt daher evtl. weniger interessant.
Man kann das großartige Programm "Fractint 19.3" benutzen, das zweidimensionale Schnitte durch den 4D-Raum der Quaternionen in rasanter Geschwindigkeit berechnen kann, um vielversprechende Formen zu finden. Fractint von der "Stone Soup Group" ist Freeware und im Internet als DOS- und X-Window-Version verfügbar. (z.B. bei http://spanky.triumf.ca/www/fractint/fractint.html)
Eine Eigenart der Julia-Mengen (also der von Quat berechneten Objekte) ist, daß sich ihr Aussehen anhand der zugehörigen Mandelbrot-Menge "voraus sagen" läßt.
Die Mandelbrot-Menge ist besser bekannt unter dem Namen "Apfelmännchen". Auch von ihr gibt es eine vierdimensionale Verallgemeinerung auf Basis der hyperkomplexen Zahlen. Jedem Punkt der Mandelbrot-Menge ist eine Julia-Menge zugeordnet. (Über den Parameter "c"). Das Aussehen der Julia-Menge hängt vom Bereich ab, aus dem "c" gewählt wurde. (Nicht vergessen: Jeder Punkt auf dem Bildschirm repräsentiert eine Zahl). Man kann z.B. "c" wählen im Hauptkörper des Apfelmännchens, im "Kopf", einem "Nebenapfel", ...
Mit Fractint 19.3 (DOS) geht man dazu folgendermaßen vor:

Viel Spaß beim Entdecken!

5.2 Beispiele für die Wirkungsweise einiger Parameter

Im Folgenden wird dargestellt, wie die Auflösung in z-Richtung ein Bild verfremden/verfälschen kann und wie man mit Antialiasing den Moire-Effekt beseitigt. Alle Bilder sind JPEG's mit niedriger Qualität.

Bild 1: Ein Bild mit zu geringer Tiefenauflösung (240): "resolution 320 240 240". Man sieht gut die ausgefransten (gezackten) Ränder der blau eingefärbten Objektteile. An diesen Stellen ist das Fraktal so dünn, daß es bei der Berechnung mit 240 als z-Auflösung nicht getroffen wird.
Es wird kein Antialiasing durchgeführt: "antialiasing 1"
Bild 2: Bei diesem Bild ist die z-Auflösung deutlich erhöht (2048): "resolution 320 240 2048". Die Ränder sind nicht mehr ausgefranst.
Allerdings erkennt man noch leicht störende Pixelmuster, die vom sogenannten Moire-Effekt herrühren (beispielsweise auf den orangenen Bildteilen). Mit Antialiasing kann man sie beseitigen. Hier wird keines vorgenommen: "antialiasing 1"
Bild 3: Dies ist das Referenzbild.
Es hat die genügend hohe z-Auflösung von 2048: "resolution 320 240 2048", wie das Bild links.
Für Antialiasing wird der Wert 4 verwendet: "antialiasing 4"
Jeder Pixel auf dem Objekt wird also gemittelt aus 4x4 Unterpixeln.

5.3 Der Kreuzblick (zur echt dreidimensionalen Wahrnehmung eines Objektes)

Vielleicht ist Ihnen seit den "Magisches Auge"-Büchern bekannt, daß spezielle Blickarten (ohne Hilfsmittel wie z.B. 3D-Brillen) ganz erstaunliche dreidimensionale Wahrnehmungen hervorrufen können. Das von Quat verwendete Prinzip ist ein anderes als das der "Magisches Auge"-Bilder (Autostereogramme), meiner Meinung nach ist es erheblich einfacher zu lernen und erbringt tolle Resultate!
Das Prinzip ist das folgende: Es werden zwei Bilder aus leicht unterschiedlichen Blickwinkeln berechnet und nebeneinander dargestellt. Das rechte Bild ist für das linke Auge und das linke Bild für das rechte Auge. Daher der Name "Kreuzblick".
Wenn Sie einmal Ihren Daumen ca. 10 cm vor ihre Augen halten und ganz normal anschauen, und nun Ihre Aufmerksamkeit auf den Hintergrund hinter dem Daumen richten, ohne direkt darauf zu schauen, so werden sie sehen, daß Sie den Hintergrund doppelt sehen. Hier setzt das Prinzip an.

3D-Stereo-Beispielbild

Sehen Sie sich das obige Beispielbild an. Setzen Sie sich dazu in ganz normalem Arbeitsabstand vor den Bildschirm und halten Sie den Daumen zwischen Augen und Bildschirm (mehr zum Auge hin). Sie sollten gerade davor sitzen und nicht den Kopf neigen oder von der Seite hinsehen. Blicken Sie ganz normal auf den Daumen. Achten Sie auf die beiden Bilder auf dem Bildschirm (ohne direkt hinzublicken, also immer auf den Daumen sehen!)
Wenn Sie jetzt 4 Bilder sehen, so ist der Daumen zu nah am Auge. Gehen Sie mit dem Daumen ein bißchen weiter weg von den Augen und schauen sie erneut auf den Daumen, während Sie auf den Hintergrund achten. Probieren Sie solange mit verschiedenen Abständen Daumen-Auge, bis Sie nur noch 3 Bilder sehen. Nun ist das mittlere dreidimensional, vermutlich aber noch nicht scharf. Das Scharfstellen ist anfangs eine Sache der Konzentration, it wachsender Übung geht es einfacher. Achten Sie eine Weile auf das noch unscharfe Bild (nicht direkt hinsehen). Irgendwann beginnt das Gehirn zu erkennen, daß die Daten, die es empfängt, durchaus einen Sinn ergeben, und versucht scharfzustellen. Für manche Menschen ist dieser Prozeß etwas schwieriger (so war es für mich), andere sind Naturtalente.
Dieser Blick ist übrigens keine exotische Eigenart von Quat, im Internet sind solche Stereo-Bilder weit verbreitet. Es ist beispielsweise auf diese Art auch möglich, Photographien von Landschaften dreidimensional zu sehen.

5.4 Die Initialisierungsdatei(en)

Initialisierungsdateien werden dazu verwendet, Quat mit den zur Berechnung eines Bildes nötigen Parametern zu füttern.
Benutzer einer Version mit Benutzeroberfläche (Windows, X Window System): Obwohl dieser Abschnitt auch auf diese Versionen anwendbar ist, werden ihn die meisten Benutzer vermutlich nicht lesen müssen. In ihnen kann man bequem Dialoge verwenden, um die Parameter einzugeben - allerdings, wer will, kann auch Initialisierungsdateien benutzen.

In der Textversion wird zum Starten einer Berechnung eine sogenannte "Initialisierungsdatei" benötigt, in der das Objekt, die Ansicht, die Farben und Schnittebenen definiert werden können. Diese Datei (und alle mittels "include" eingefügten, s.u.) sind simple Textdateien, die mit jedem Texteditor erstellt werden können. (z.B. "edit" unter DOS, "notepad" unter Windows, "vi" unter Unix).
Die verwendete Syntax ist sehr einfach, in jeder Zeile steht ein Schlüsselwort und danach folgt eine bestimmte Anzahl von Parametern. (z.B. definiert "viewpoint 0 0 1" den Sichtpunkt)
In dieser Initialisierungsdatei können andere Dateien automatisch eingefügt werden (mittels des Schlüsselwortes "include"). Es ist so möglich, Farbverläufe getrennt von fraktalen Daten oder Schnittebenen zu speichern (in Dateien mit einer anderen Endung z.B.). Wird eine solche Datei an einer bestimmten Stelle in der Initialisierungsdatei "included", so wird sie dort eingefügt, als würde dort ihr gesamter Inhalt stehen. Die Initialisierungsdatei dient nur dem Starten der Berechnung. Hat man erstmal eine Berechnung begonnen, so benötigt man sie nicht mehr. Die Fraktaldaten sind im PNG-Bild selbst gespeichert und können daraus wieder rekonstruiert werden.

Vorschlag zur Aufteilung der Daten in verschiedene Dateien:
INI    Dieser Dateityp ist von Quat fest vorgegeben. Es ist die Initialisierungsdatei. In ihr kann die gesamte Information, die zur Erzeugung eines Bildes nötig ist, gespeichert werden, oder es können auch andere Dateien (wie hier vorgeschlagen) "include"d werden.
OBJ    In Dateien mit dieser Endung werden die fraktalen Parameter, die die Form bestimmen, die Ansicht, von der aus das Fraktal gezeigt werden soll, sowie einige Raytracing-spezifische Parameter, die die Beleuchtung spezifizieren, definiert.
COL    Hierin wird eine Farbe oder ein Farbverlauf gespeichert.
CUT    Diese Dateien dienen der Angabe einer Schnittebenen-Konfiguration (in den meisten Fällen wohl nur eine einzige Schnittebene).

Dieses Konzept mag auf den ersten Blick kompliziert aussehen, es bietet aber eine hohe Flexibilität. So können Fraktale schnell mit anderen Farben "ausgestattet" werden oder neue Schnittebenen hinzugefügt werden, ohne an der Objektdefinition selbst etwas zu ändern: Es wird einfach nur eine Zeile in der INI-Datei verändert. Aber für alle, die das immernoch für zu kompliziert halten: Man kann alle Schlüsselwörter auch in der Initialisierungsdatei benutzen.