Quat - Ein 3D-Fraktal-Generator

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

----------------------------------------------------------------------------
Inhalt:
1. Einfhrung
    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 Benutzeroberflche (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 Schlsselwrter zur Definition von fraktalem Objekt und der Ansicht
    4.2 Schlsselwrter zur Definition von Farben
    4.3 Schlsselwrter zur Definition von Schnittobjekten
    4.4 sonstige Schlsselwrter
5. Anhang
    5.1 Erkundung eines 3D-Fraktals
    5.2 Beispiele fr 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. Einfhrung

                     [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 natrlich fraktale) "Klumpen" - im Gegensatz zu
dem, was herkmmlicherweise im Zusammenhang mit Fraktalen als
"dreidimensional" bezeichnet wird (eine bloe Uminterpretation der
zweidimensionalen Daten nmlich).

Die Objekte knnen koloriert werden, indem durch eine Formel Koordinaten des
Raumes (oder, in spteren Versionen, andere Parameter) mit Farben verknpft
werden. Die Palette der Farben kann aus bis zu 50 einzelnen Farben oder
Farbverlufen bestehen.

Zustzlich ist es mglich, Schnittebenen zu definieren. Es kann so der
innere Aufbau der Fraktale dargestellt werden. Besonders interessant ist
natrlich ein Schnitt mit der komplexen Ebene, man erhlt als Schnittfigur
das normale zweidimensionale Fraktal, das z.B. auch mit "Fractint" berechnet
werden kann. Zustzlich sieht man aber, wie verschiedene Regionen des
zweidimensionalen Fraktals im dreidimensionalen Raum miteinander verknpft
sind.

Die Berechnung und Speicherung des Bildes erfolgt grundstzlich in 24bit
True-Color, die Anzeige whrend der Berechnung funktioniert hingegen auch in
256-Farben-Modi (allerdings in verminderter Qualitt.)

Die von Quat berechneten Fraktale entsprechen genau den herkmmlichen,
zweidimensionalen "Julia-Mengen", die so gut wie jedes Fraktalprogramm
berechnen kann. (Die verfgbaren 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 Imaginrteil) sogenannte "Hamilton'sche Quaternionen". Sie sind
eine Verallgemeinerung der komplexen Zahlen und bestehen aus 4 Komponenten
(1 Realteil und 3 Imaginrteile). Setzt man die 2 zustzlichen Imaginrteile
Null, so hat man wieder die ganz normalen komplexen Zahlen. Mit den
Quaternionen (daher brigens der Name "Quat") wre es also mglich, sogar
vierdimensionale Fraktale zu berechnen, berechnet werden aber nur
dreidimensionale. (Wenn jemand einen vierdimensionalen Monitor erfindet,
erklre ich mich dazu bereit, mein Programm entsprechend umzundern... :-) )

Die Berechnung einer wirklich dreidimensionalen Ansicht (3D-Stereo) ist
mglich. 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
Qualittsverlust (JPEG komprimiert zwar besser, aber die Bildqualitt leidet
darunter). Nhere Informationen ber PNG: http://www.cdrom.com/pub/png. Da
PNG das Speichern applikationsspezifischer Daten erlaubt, speichert Quat
smtliche zur Erzeugung eines Bildes ntigen 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. Nhere Informationen zu ZLIB:
http://www.cdrom.com/pub/infozip/zlib

Quat ist freie Software. Sie knnen 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 wnschen) jeder spteren Version.

Die Verffentlichung dieses Programms erfolgt in der Hoffnung, da es Ihnen
von Nutzen sein wird, aber OHNE JEDE GEWHRLEISTUNG - sogar ohne die
implizite Gewhrleistung der MARKTREIFE oder der EIGNUNG FR 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 fr die Klrung einiger rechtlicher
Fragen und an Oliver Siemoneit fr die Hilfe bei der englischen bersetzung.
Vielen Dank an Larry Berlin (lberlin@sonic.net) fr seine Hinweise zu Themen
wie 3D-Stereo-Ansicht, fr seine vielfltigen Ideen zur Verbesserung des
Programms (speziell der Benutzeroberflche), fr das Testen der Vorversionen
von Quat 0.92, und nicht zuletzt fr das Titelbild von Quat, das er kreiert
hat!
Larry Berlin bietet ein groartiges 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 fr's Testen.

1.1 Was ist neu?

Version 0.92:

   * Endlich eine [Graphische] Benutzeroberflche fr die Windows- und
     X-Window-Version hinzugefgt, obwohl ich das nie vorhatte...
     Die volle Funktionalitt der bisherigen Initialisierungsdateien kann
     ber Dialogboxen erreicht werden: Es gibt einen "Object Editor", einen
     "View Editor", einen "Color Editor", einen "Intersection Editor" und
     einen Dialog fr die brigen Parameter.
     Es gibt jetzt auch Bildlaufleisten, falls das Bild grer als das
     Fenster ist. Die Bedienung luft im Windows-Stil ab (Image|Open,
     Image|Save, Image|Save As,...) und bentigt dementsprechend wesentlich
     mehr Speicher als vorher.
   * Windows-Version: in 32bit compiliert (bentigt daher Win 95 oder NT),
     ist wesentlich schneller als vorher, Untersttzung von langen
     Dateinamen, Win95 look & feel.
   * Berechnung von 3D-Stereo-Paaren, die ohne spezielle Zusatzgerte echt
     dreidimensional gesehen werden knnen (mit dem sogenannten
     "Kreuzblick", siehe Anhang 5.3). Hierfr wurde das neue Schlsselwort
     "interocular" hinzugefgt.
   * Neue Formel hinzugefgt: xn+1 = cxn(1-xn)
   * Erzeugung von sogenannten "ZBuffern". Dies ermglicht es, bestimmte
     Parameter, die nichts mit der fraktalen Bildberechnung zu tun haben
     (z.B. die Farbgebung), auch noch nach der Berechnung zu verndern. Man
     kann so mit dem Objekt "spielen", also z.B. verschiedene Farben
     ausprobieren, um zu sehen, was am besten aussieht, ohne lange warten zu
     mssen.
   * Anderer, einfacherer Algorithmus zur Berechnung des Normalenvektors
     wird verwendet.
   * Neue Funktionen fr die Farbformel: atan, asin und acos
   * Die Zeit, die zur Berechnung bentigt wurde, wird zusammen mit dem Bild
     gespeichert (allerdings nicht sehr genau, nur in Sekunden)
   * gegen die Library zlib, version 1.1.3, gelinkt.

Version 0.91: (8.2.1998)

   * Struktur der Initialisierungsdateien gendert. Es kann jetzt die ganze
     Information in einer einzigen Datei gespeichert werden, das alte Schema
     ist jedoch immernoch mglich, wenn man das Schlsselwort "include
     <Datei>" benutzt. Die Schlsselwrter "colorfile", "objectfile" und
     "cutfile" werden nicht mehr erkannt. (stattdessen "include" benutzen.)
   * antialiasing Schlsselwort hinzugefgt. Es kann nun der Moire-Effekt
     verhindert werden, der fr strende Muster auf den Objekten
     verantwortlich ist. Das Ergebnis ist in den meisten Fllen eine viel
     bessere Bildqualitt.
   * Formelinterpreter ("colorscheme") intern von Grund auf gendert.
   * Bugfix die Option "-p" betreffend. (Segmentation fault)
   * Bugfix: Auf Rechnertypen, bei denen das "alignment" von "doubles" eine
     Rolle spielt (z.B. DEC Alpha, nicht Intel) fhrten Bilder mit
     Schnittebenen zu "alignment errors".
   * Windows-Version: Verbesserte Bedienung in Win95 (Drag & Drop auf Icon,
     Context-Men).
     Lesen Sie dazu den Abschnit 3.2 in dieser Datei.

Version 0.90b: (14.9.97)

   * Keine nderungen am Sourcecode, nur englischsprachige Dokumentation
     hinzugefgt

Version 0.90: (29.7.97)
Erste verffentlichte Version.

1.2 Systemvoraussetzungen

Im Prinzip keine, wenn Sie ANSI-C-Code compilieren knnen... :-)

Die Voraussetzungen fr die vorcompilierten Versionen von Quat:

   * Windows: 486 Prozessor oder hher (u.a. Pentium), ca. 16 MB RAM
     (abhngig von der Gre des zu berechnenden Bildes), Windows 95 oder
     Windows NT-Betriebssystem (vermutlich auch Windows 98, was ich aber
     nicht getestet habe). Windows 3.11 (auch mit Win32S) funktioniert
     nicht. High- oder True-Color-Grafikmodus empfohlen.
   * X Window System/Linux: Hardwarevoraussetzungen wie Windows-Version. Die
     X-Window-Version bentigt die Library "Qt" von Troll Tech. Sie ist frei
     verfgbar (bei http://www.troll.no), sie sollte in allen aktuellen
     Linux-Distributionen enthalten sein. Wenn Sie den KDE-Window-Manager
     benutzen, knnen Sie sicher sein, da diese Library installiert ist.
   * DOS: (Textversion ohne grafische Ausgabe auf dem Schirm). 486 Prozessor
     oder hher (u.a. Pentium), 4 MB RAM (theoretischer Wert, ich hatte
     leider keinen Computer mit so wenig Speicher zum Testen zur Verfgung).
     Falls Sie ein reines DOS (ohne Win95 im Hintergrund) benutzen wollen,
     bentigen Sie einen DPMI-Treiber. Sie knnen einen von jedem
     FTP/WWW-Server herunterladen, der DJGPP 2 anbietet. Der Name ist
     "CSDPMI4B.ZIP". Die Datei ist nur 41 KB gro. (Link in Deutschland z.B.
     ftp://ftp.uni-paderborn.de/pub/simtelnet/gnu/djgpp/v2misc)

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

1.3 Bugs und Adressen

Falls Sie Verbesserungsvorschlge haben, oder einen Bug berichten wollen,
knnen Sie eine Email an mich (dirk.meyer@studbox.uni-stuttgart.de)
schicken. Ich wrde 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 knnen, knnen Sie mir auch C-Code schicken.
Ich werde ihn in zuknftigen Versionen einbauen. (Und natrlich Sie als
Autor erwhnen!)
Mir schwebt dabei das groe Vorbild "Fractint" vor, vielleicht finden sich
ja auch hier ein paar Enthusiasten!
Meine herkmmliche 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

Kernstck der Berechnung von Fraktalen ist eine iterative Formel. (Es gibt
noch andere Arten von Fraktalen, am hufigsten anzutreffen ist jedoch die
hier beschriebene Sorte). "Iterativ" bedeutet, da der Wert, den die Formel
ergab, im nchsten Schritt wieder in die Formel eingesetzt wird und so zu
einem neuen Wert fhrt, 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
unabhngigen Komponenten, die man Real- und Imaginrteil nennt. Ist der
Imaginrteil Null, so entsprechen die komplexen Zahlen den reellen (also
z.B. 1.23324, -23, ...). Zur Kennzeichnung des Imaginrteils 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 Imaginrteil. In zweidimensionalen
Fraktalprogrammen identifiziert man den Realteil mit der x-Koordinate auf
dem Schirm, den Imaginrteil mit der y-Koordinate.

Quat bentigt 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 imaginre Teile. Die
Bezeichnungen fr diese Teile lauten e, j, k und l. "e" entspricht dem
Realteil, "j" dem Imaginrteil 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 fr 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 wrden sogar fr vierdimensionale Fraktale ausreichen, aus
naheliegenden praktischen Beschrnkungen (s. oben) und der Beschrnktheit
des menschlichen Wahrnehmungsvermgens (also nicht aus Unfhigkeit des
Programmierers...) kann Quat "nur" dreidimensionale Fraktale erzeugen. Die
zustzliche 4. Dimension (4. Komponente) wird auf einen konstanten Wert
gesetzt, der ber den Parameter "lvalue" in der OBJ-Datei festgelegt wird
(Versionen mit Benutzeroberflche: Im Object Editor). Diese Vorgehensweise
erzeugt einen dreidimensionalen Schnitt aus einem vierdimensionalen Fraktal,
analog zum zweidimensionalen Schnitt, den gewhnliche Fraktalprogramme aus
den von Quat berechneten dreidimensionalen Fraktalen machen.

Zurck 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 Abzhlindex, mit dem die "x" durchnumeriert werden
(n=0,1,2,3...). Der in der Formel auftretende Wert "c" ist wiederum eine
hyperkomplexe Zahl, die whrend 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 grer und geht damit gegen Unendlich.

Das von Quat gezeichnete Objekt ist die Menge aller Punkte (= Zahlen) x0,
fr 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 ausfhren kann,
um zu sehen, ob die Folge sich einpendelt oder nicht. (Das liegt an der
Beschrnktheit der menschlichen Lebensdauer, wiederum nicht an der
Unfhigkeit 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 knnen wir das berechnete Objekt ganz przise beschreiben: Es ist die
Menge aller Punkte (= Zahlen) x0, fr die die durch die Iterationsformel
definierte Folge der xn nach hchstens maxiter Iterationen den Wert bailout
nicht berschritten hat. (Wie kompliziert doch schne Formen mathematisch zu
beschreiben sind... Andererseits: Wie schn doch Mathematik sein kann!)

Zur Beruhigung: Auch wer das alles nicht versteht oder wen's ganz einfach
nicht interessiert, der kann trotzdem schne 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 heien: Wir mssen das Objekt noch auf den Monitor projizieren.
Dazu mssen wir eine Bildebene im Q-Raum definieren, die den Bildschirm
reprsentiert. Wie also diese Bildebene das Objekt "sehen" wrde, so wird es
auf dem Monitor dargestellt.

Es ergeben sich so 2 verschiedene Koordinatensysteme: Einmal das
"darzustellende" System (der Q-Raum), auerdem 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 heien und der horizontalen und der vertikalen Achse des Monitors
entsprechen. Auerdem 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 gegenberliegende
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 heit 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
heit, 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 Lnge "lxr" im Q-Raum hat (s. Parameter "lxr"), und das
Verhltnis von x/y dem gewhlten Auflsungsverhltis (siehe "resolution")
entspricht. (fr 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 vollstndig
definiert.

Um alle mglichen Lagen des Bildschirmrechtecks erreichen zu knnen (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 ermglicht 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 verndern, und aus dem ZBuffer
schlielich ein fertiges Bild erzeugen, was relativ schnell geht.

                                  [Image]
                Grafik 1: Verschiedene Wege zum fertigen Bild

ZBuffer erffnen ein weites Feld an Experimentiermglichkeiten, 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 anfngt.

3. Bedienung

3.1 Benutzen der Version mit Benutzeroberflche (Windows, X Window System)

Starten von Quat:

   * Windows 95: Quat wird gestartet, indem man im Explorer auf das
     Quat-Symbol doppelklickt.
   * X Window System: Starten Sie Quat, indem Sie entweder "xquat" in einem
     Terminal eingeben, oder indem Sie auf das entsprechende Symbol in einem
     Dateimanager klicken.
     Sie knnen beim Aufruf auch die bei X blichen Argumente angeben, wie
     "-geometry 200x160" oder "-display foggy:0.0", oder auch die von Qt
     bereitgestellten Optionen wie "-style=windows". Sie knnen auch den
     Namen einer Datei (PNG oder ZPN) angeben, die beim Start automatisch
     geffnet wird.

Beschreibung der Menpunkte:

"Image"-Men:

Image | Open...
(Bild | ffnen). ffnet ein Bild (PNG-Datei), zeigt es an und ldt die
Parameter, die in ihm gespeichert sind. Abschlieend zeigt Quat an, wie weit
das Bild bereits berechnet ist.
Mglicherweise 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" untersttzen PNG-Bilder (Windows), auch "XV 3.10a" mit
dem PNG-Patch (X).

Image | Close
(Bild | Schlieen). Schliet das Bild, lt aber die dazugehrigen Parameter
im Speicher. Wenn Sie einige Parameter eines Bildes ndern wollen, mssen
Sie erst das Bild schlieen, dann die Parameter verndern 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 bentigt 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 knnen Sie
in dem Dialog eingeben, der erscheint, nachdem Sie diesen Menpunkt
angewhlt haben.

Image | Adjust Window
(Bild | Fenster einstellen). Setzt die Gre des Fensters entsprechend der
Bildgre (solange es auf den Bildschirm pat).

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 geffnet ist (der vollstndig berechnet sein mu), knnen
Sie ihn mit diesem Menpunkt zu einem Bild machen (siehe Abschnitt 2.3).
Ein Bild ist ein fraktales Object, das beleuchtet und gefrbt 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 eingefrbt. 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 mgen, schlieen Sie einfach das Bild,
wodurch Sie wieder zum ZBuffer zurckgelangen. Mehr ber ZBuffer in
Abschnitt 2.3.

Calculation | Stop
(Berechnung | Stop). Unterbricht eine laufende Berechnung (sowohl die eines
Bildes, als auch eines ZBuffers). Sie knnen die Berechnung fortsetzen,
siehe die beiden Menpunkte oben.

"Parameters"-Men:

Parameters | Reset
(Parameter | Zurcksetzen). Setzt alle Parameter zurck 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 ntig sind, um ein
Bild zu erstellen. Die Werte werden vorher nicht auf die Vorgabewerte
zurckgesetzt! (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 ntig sind, um ein Bild zu
generieren. Sie knnen 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
Menpunkt 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 ntzlich, wenn Sie das Bild mit der Textversion von
Quat berechnen wollen. (Die Textversion benutzt INI-Dateien, um die
Parameter zu erhalten, die sie bentigt).

Die Editoren (in denen die Parameter verndert werden knnen):

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

                         [Bild des Object Editors]

In diesem Dialog knnen Sie die fraktalen Daten des Objektes angeben. Diese
Daten bestimmen die Gestalt des Fraktals. Fr folgende Schlsselwrter
knnen Werte eingegeben werden: "maxiter", "lvalue", "bailout" und "c".
(Siehe deren Beschreibungen in Abschnitt 4.1)
Darberhinaus bietet der Editor die Mglichkeit, die Auswirkungen von
Parameternderungen sofort zu begutachten (sofort ... Pentium oder hher/
nach einigen Sekunden bei einem 486). Es gibt ein "Mandel Preview"-Fenster
(="Mandel Vorschau"), in dem die Mandelbrotmenge (das Apfelmnnchen)
angezeigt wird (oder genauer, einen zweidimensionalen Schnitt aus der
vierdimensionalen Verallgemeinerung der Mandelbrotmenge). Sie kann als
Landkarte fr "Julia-Mengen" (den Objekten, die Quat berechnet) angesehen
werden. Das rote Kreuz markiert den gewhlten Punkt "c". Jeder Punkt "c"
erzeugt eine andere Julia-Menge. Punkte, die innerhalb der Mandelbrot-Menge
(also dem schwarzen Gebiet) liegen, fhren zu verbundenen Julia-Mengen, im
anderen Fall zu unterteilten.
Sie knnen 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"
gendert 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 drcken, wird die enstprechende
Julia-Menge zu den aktuellen Einstellungen der Parameter berechnet. Mit der
Laufleiste "3rd-dim. Intersec." ist whlbar, welcher Schnitt mit dem
dreidimensionalen Objekt angezeigt wird. ndern Sie ihn und drcken Sie
"2D-Preview", so wird der neue Schnitt angezeigt. Wenn Sie diese
verschiedenen Schnitte im Geiste bereinander stapeln, erhalten Sie eine
ungefhre Vorstellung davon, wie das dreidimensionale Objekt aussehen wird.
Wenn Sie den Button "3D-Preview" drcken, bekommen Sie ein dreidimensionales
Bild, wie Quat es wirklich berechnen wrde. Allerdings ist der Aufbau
relativ langsam, also empfiehlt es sich, zuerst mit dem 2D-Preview
abzuchecken, ob das Fraktal annhernd 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 darber, 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 folgendermaen 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 fr "interocular" ist ein Winkel angegeben. Es ist
der Winkel zwischen dem "Viewpoint" fr das linke Auge, dem Ursprung (bevor
MOVE angewendet wird) und dem "Viewpoint" fr 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 wre, wenn man nur Werte eingeben knnte, die man auch in
einem Texteditor angeben knnte (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 imaginre 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 Lnge der Pfeile entspricht der Lnge
2 im Q-Raum.
Das kleine blaue Rechteck markiert den Sichtpunkt ("viewpoint"), das grne
Rechteck stellt die Bildebene dar. Wenn man in das blaue Rechteck klickt,
kann man durch Ziehen der Maus den Sichtpunkt verschieben. Manche Positionen
fr 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 knnen Farben (oder besser, Farbverlufe) definiert werden. Links ist
eine Laufleiste zu sehen, die dazu dient, denjenigen Farbverlauf
auszuwhlen, den man editieren mchte. Daneben sind zwei Buttons "Add" und
"Del" (Hinzufgen und Lschen). "Add" fgt eine neue Farbe vor der aktuellen
Position in der Palette hinzu, "Del" lscht die aktuell ausgewhlte. Es mu
mindestens eine Farbe existieren, aber nicht mehr als 30. Fr jeden
Farbverlauf knnen 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 standardmigen
Windows/KDE-Dialog, um eine Farbe auszuwhlen. 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" knnen 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 fr High- oder
True-Color-Modi, hat Ihr Video-Modus weniger Farben, so ist die Vorschau
nicht besonders brillant...
Der jeweils gerade gewhlte Farbverlauf wird durch einen schwarzen Rahmen
gekennzeichnet.
Darunter ist das Eingabefeld in das Sie die Farb-Formel eintragen knnen,
entweder direkt, oder durch Anklicken einer vordefinierten Formel.
(Beschreibung siehe Schlsselwort "colorscheme").
Wenn Sie den "Save As"-Button klicken, knnen 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
auszuwhlen. Die Buttons "Add" und "Del" funktionieren ebenfalls wie oben,
der eine fgt eine neue Schnittebene hinzu, der andere lscht die gerade
gewhlte. Es knnen 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 fnf Buttons, die als Abkrzung fr bestimmte
Auflsungen dienen. Wenn Sie einen davon drcken, wird die Auflsung auf die
angegebenen Werte gesetzt.
Windows-Version: Sie knnen einstellen, alle wieviel Punkte das Bild whrend
der Berechnung aktualisiert wird. Whlen 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 bentigt wurde, ist hier
ebenfalls angegeben.

"ZBuffer"-Men:

Zu ZBuffern lesen Sie bitte Abschnitt 2.3. Die Menpunkte in diesem Men
dienen dem Laden, Speichern, Speichern Als und Schlieen eines ZBuffers.

3.2 Weitere Features von Quat in Windows 95

Sollen INI-Dateien benutzt werden, um Quat mit den ntigen Informationen
ber das zu generierende Bild zu fttern, so kann die Bedienung von Quat
vollstndig ber den Explorer abgewickelt werden. Dateien mit der Endung
"ini" sind standardmig mit dem Notizblock/Editor verknpft. Ein
Doppelklick auf eine ini-Datei ffnet sie also zum Editieren. Im Kontextmen
(rechte Maustaste auf Datei) knnen Sie zustzlich einen Menpunkt anlegen,
mit dem Sie die Berechnung dieser ini-Datei starten. Gehen Sie dazu wie
folgt vor:

   * Im Explorer den Menpunkt "Optionen..." im Men "Ansicht" whlen.
   * Karteikarte "Dateitypen" selektieren.
   * In der Auswahlliste "Registrierte Dateitypen" den Typ
     "Konfigurationseinstellungen" whlen und den Button "Bearbeiten"
     klicken. Es erscheint ein neues Fenster.
   * In diesem Fenster auf den Button "Neu" klicken.
   * In der Eingabezeile "Vorgang" z.B. "Berechnen" eintragen.
   * als "Anwendung fr diesen Vorgang" das Programm Quat, inklusive Pfad,
     angeben (z.B. "C:\Quat\Quat.exe"). Das Feld "DDE verwenden" sollte
     deaktiviert sein.
   * Klicken Sie nun solange auf die (in den verschiedenen inzwischen
     geffneten Fenstern) "OK"-Buttons, bis sie wieder im Explorer-
     Hauptfenster sind.

Sie knnen jetzt, wenn Sie im Explorer eine ini-Datei mit der rechten
Maustaste anklicken, im dann erscheinenden Context-Men "Berechnen"
auswhlen, und Quat beginnt sofort mit der Berechnung des in der Datei
beschriebenen Fraktals.
Ebenso knnen Sie fr den Dateityp "PNG" einen Vorgang "Berechnung
fortsetzen" einrichten, damit sie halbfertige Bilder weiterrechnen knnen,
Sie mssen dann nur zwei Mausklicks ausfhren. Unter Umstnden ist der
Dateityp "PNG" noch nicht registriert, Sie mssen ihn evtl. neu anlegen.
Eine weitere Mglichkeit des komfortablen Arbeitens ist es, einen Link zu
Quat auf dem Desktop anzulegen. Sie knnen, 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 fr die Versionen mit Benutzeroberfche.)
Quat versteht die folgenden Parameter, die ihm bergeben werden:

                            Berechnet ein Bild aus einer INI-Datei.
-i <INI-Datei>              (INI-Dateien werden benutzt, um Quat mit den
                            Werten zu fttern, die das Fraktal und die
                            Ansicht, etc., bestimmen.)

-z <INI-Datei>              Berechnet einen ZBuffer (Dateityp ZPN) aus einer
                            INI-Datei
                            Erzeugt ein Bild unter Verwendung eines vorher
-i <ZPN-Datei>              berechneten ZBuffers. (Ist natrlich wesentlich
                            schneller als die Erzeugung aus einer
                            INI-Datei.)
                            Erzeugt ein Bild aus einem ZBuffer, ersetzt
-i <ZPN-Datei> <INI-Datei>  jedoch bestimmte Parameter (z.B. Farbgebung)
                            durch die in der INI-Datei angegebenen Werte.
                            Liest die Parameter, mit denen das betreffende
-p <PNG- oder ZPN-Datei>    Bild/ZBuffer berechnet wurde und schreibt sie in
                            eine INI-Datei.
                            Setzt die Berechnung eines unfertigen Bildes
-c <PNG- oder ZPN-Datei>    oder ZBuffers fort. Die INI-Datei, aus der das
                            Bild/ZBuffer generiert wurde, wird nicht mehr
                            bentigt.
-h                          Anzeigen einer Kurzinformation

Ein Aufruf sieht also beispielsweise so aus:

quat -i test.ini

Eine Berechnung wird abgebrochen, indem

   * DOS-Version: Eine Taste gedrckt wird
   * sonstige Textversionen: (der Computer ausgeschaltet wird). Die
     Textversion kann nicht regulr abgebrochen werden, da ich keinen fr
     alle Systeme funktionierenden (ANSI-C) Weg kenne, die Tastatur
     abzufragen... :-(

4. Aufbau der Initialisierungsdatei(en)

Wenn Sie eine Version mit Benutzeroberflche (ab jetzt VmB angekrzt)
benutzen, knnen 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 Schlsselwort, dem ein oder mehrere Parameter folgen.
Die Parameter und das Schlsselwort mssen 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: Fliekommazahlen (wie -0.2353, 21.21324, 0.001, ...)
strings: Zeichenketten
Wird ein Schlsselwort nicht verwendet, so wird ein Vorgabe-Wert eingesetzt.
Dem Programm sind einige Beispiel-Dateien beigefgt, sie mal anzusehen und
zu berechnen lohnt sich, da vieles beim Anwenden direkt klar wird, was hier
umstndlich beschrieben ist.

4.1 Schlsselwrter zur Definition von fraktalem Objekt und der Ansicht

   * "c"
     4 float-Parameter folgen. VmB: im Object Editor.
     Die Zahlen geben Real- und 3 Imaginrteile der Konstanten "c" in der
     Formel "xn+1 = xn2 - c" (oder der anderen, die untersttzt wird) an.
     Die 4 floats sind e-, j-, k- und l-Teil der hyperkomplexen Zahl.
     Dieser Parameter entscheidet ber die Form und Struktur des Fraktals.
     Um gute Ergebnisse zu erzielen, sollten sich diese 4 Werte um den
     Nullpunkt bewegen (Nullpunkt im 4D-Raum!), also alle etwa im Bereich
     von -2 bis +2 sein.
     Aber: Herumexperimentieren lohnt sich (ist auch der Witz dieses
     Programms)!
   * "bailout"
     ein float-Parameter folgt. VmB: im Object Editor.
     Hier wird derjenige float-Wert angegeben, bei dessen berschreitung die
     Iterationsfolge als "gegen unendlich gehend" angesehen und die
     Berechnung des Punktes beendet wird.
     Entspricht dem Parameter gleichen Namens des Programms "Fractint".
   * "maxiter"
     ein int-Parameter folgt. VmB: im Object Editor.
     Ist die maximale Anzahl der Iterationen, die durchgefhrt wird.
     Wenn nach dieser Anzahl der Wert "bailout" (s.o.) nicht berschritten
     worden ist, so wird die Iterationsfolge als "gegen Null gehend oder
     periodisch" angesehen und gehrt somit zur Julia-Menge (also zum
     Objekt).
     Dieser Wert kommt in jedem Fraktalprogramm unter hnlichem Namen vor.
     Im Gegensatz zu 2D-Fraktalprogrammen sollte dieser Wert bei Quat nicht
     allzu hoch gewhlt werden (kleiner als 100): Dieser Wert erhht im
     Prinzip den Detailreichtum des Bildes, was im 2D erwnscht, im 3D aber
     unschn ist, da die Oberflchen der Objekte im Extremfall unendlich
     zerklftet werden.
   * "lvalue"
     ein float-Parameter folgt. VmB: im Object Editor.
     Der Wert (fr die 4. Komponente eines Punktes im Raum), der die 4.
     Dimension reprsentiert. Als Iterations-Startwert x0 wird der Punkt im
     Raum genommen, der berechnet werden soll. Damit hat man erst 3
     Komponenten. Die 4. Komponente wird auf den Wert "lvalue" gesetzt.
   * "formula"
     ein int-Parameter folgt. VmB: im Object Editor.
     Bestimmt, nach welcher Iterationsformel iteriert werden soll. Hier sind
     die Werte "0" und "1" zulssig, die fr folgende Formeln stehen:
     0        xn+1 = xn2 - c
     1        xn+1 = cxn(1-xn)
   * "viewpoint"
     drei float-Parameter folgen. VmB: im View Editor.
     "Viewpoint" ist ein Vektor im Q-Raum. Er kennzeichnet den Punkt im
     Q-Raum, der das Zentrum der Bildebene ist (von dem aus also das Objekt
     betrachtet wird). Siehe auch Abschnitt 2.2.
   * "up"
     drei float-Parameter folgen. VmB: im View Editor.
     Gibt die Richtung im Raum an, wo "oben" sein soll. Dieser Vektor darf
     nicht senkrecht zur Bildebene stehen! Siehe auch Abschnitt 2.2.
   * "light"
     drei float-Parameter folgen. VmB: im View Editor.
     Ist ein Vektor im Bildkoordinatensystem und gibt die Position der
     Lichtquelle relativ zur Position des Beobachters ("viewpoint") an.
   * "lxr"
     1 float-Parameter folgt. VmB: im View Editor.
     Gibt die Lnge des "Bildschirms" auf der Bildebene im Q-Raum an.
     Bestimmt so die Gre des Sichtfensters/Objekts. Siehe auch Abschnitt
     2.2.
   * "move"
     2 float-Parameter folgen. VmB: im View Editor.
     Hier wird angegeben, wie die Bildebene verschoben werden soll (in ihren
     eigenen Koordinatenrichtungen x und y). Siehe auch Abschnitt 2.2.
   * "interocular"
     1 float-Parameter folgt. VmB: in "View Editor".
     Wenn dieser Wert Null ist, wird eine 2D-Projektion des fraktalen
     Objekts generiert. Wenn er auf einen Wert ungleich Null gesetzt wird,
     werden zwei verschiedene 2D-Projektionen berechnet, eine fr das linke
     Auge (die rechte) und eine fr das rechte Auge (die linke). Wenn Sie
     wissen, wie man diese Bilder zu einem einzigen verschmelzen kann,
     knnen Sie das Objekt echt dreidimensional sehen! Eine groartige
     Erfahrung! Sehen Sie nach im Anhang 5.3 ("Kreuzblick"), dort steht eine
     Erklrung, wie die Bilder verschmolzen werden knnen.
     Der Wert ist die Entfernung, die der Viewpoint fr das linke von dem
     fr das rechte Auge hat (im Q-Raum). Er sollte kleiner als LXR sein.
   * "phong"
     2 float-Parameter folgen. VmB: in "Other Parameters".
     Die erste Zahl gibt die maximale Intensitt des Phong-Highlights an
     (von 0 bis 1), der zweite, wie scharf das Phong-Highlight sein soll
     (also wie schnell sich die Helligkeit der normalen Helligkeit ohne
     Highlight annhert.) (von 0 bis unendlich)
     Ein "Phong-Highlight" ist ein greller Lichtreflex, wie er z.B. auf
     einer Billardkugel beobachtet werden kann.
   * "ambient"
     1 float-Parameter folgt. VmB: in "Other Parameters".
     Gibt an, wie hell das Umgebungslicht sein soll. Wert zwischen 0 und 1.
   * "antialiasing"
     1 int-Parameter folgt. VmB: in "Other Parameters".
     Um strende Moire-Effekte (regelmige Muster schwarzer Punkte auf den
     Objekten) zu verhindern, werden anstelle eines Pixels mehrere
     Zwischenpunkte berechnet und von diesen der Mittelwert der Helligkeit
     berechnet. Der Parameter hinter diesem Schlsselwort gibt an, wieviele
     Zwischenpunkte berechnet werden. Bei "antialiasing 2" z.B. wird ein
     Pixel durch ein 2x2 Rechteck ersetzt, also 4 Punkte berechnet, deren
     mittlerer Helligkeitswert die Helligkeit des Pixels bestimmt. Natrlich
     verlangsamt dies die Berechnung um den Faktor 4 !
     Wert mu zwischen 1 und 5 einschlielich liegen.

4.2 Schlsselwrter zur Definition von Farben

Eine Farbe bei Quat wird reprsentiert durch ein Red-Green-Blue-Tripel,
wobei Red, Green und Blue Werte von 0.0 bis 1.0 annehmen knnen.
In Verbindung mit anderen Farben (also in einer Palette) bentigt jede Farbe
noch eine Art Gewichtung, die bestimmt, welchen Anteil an der Palette diese
Farbe ausmacht. Gleiches gilt fr einen Farbverlauf. Die Gewichtungen aller
Farben/Verlufe werden von Quat summiert, um festzulegen, was 100%
entspricht.
Es knnen mehrere Farben und Farbverlufe 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 spter wichtig werden,
wenn es darum geht, wie man ber eine mathematische Formel eine Farbe
ansteuert.
Die Schlsselwrter:

   * "color"
     4 float-Parameter folgen. VmB: indirekt im Color Editor (Setzen beider
     Farben eines Farbverlaufs auf die gleichen Werte).
     Die erste Zahl gibt die Gewichtung der Farbe an (bedeutungslos, wenn
     die gesamte Palette aus nur einer Farbe besteht) und DARF NICHT NULL
     sein! Die anderen 3 die Intensitt von Rot, Grn und Blau (in dieser
     Reihenfolge) als Werte zwischen 0.0 (keine Intensitt) und 1.0
     (maximale Intensitt)
   * "colorrange"
     7 float-Parameter folgen. VmB: im Color Editor.
     Die 1. Zahl gibt die Gewichtung an (siehe "color"), die nchsten 3 die
     Farbe, bei der der Farbverlauf starten soll, die letzten 3 die Farbe,
     bei der der Farbverlauf enden soll.

4.3 Schlsselwrter zur Definition von Schnittobjekten

Es knnen Objekte (bis jetzt nur Ebenen) definiert werden, die mit dem
fraktalen Objekt geschnitten werden.
Schlsselwrter:

   * "plane"
     6 float-Parameter folgen. VmB: im Intersection Editor.
     Definiert eine Ebene, die den Raum in 2 Halbrume unterteilt. Die
     ersten 3 Parameter geben den Normalenvektor der Ebene an, die letzten 3
     den Aufpunkt der Ebene. Der Normalenvektor zeigt in denjenigen
     Halbraum, der vom Fraktal weggeschnitten werden soll.

4.4 sonstige Schlsselwrter

   * "include"
     Fgt eine andere Textdatei ein. Das Resultat ist genauso, wie wenn die
     Angaben, die in der eingefgten Datei stehen, direkt dort stehen
     wrden, wo include steht.
     Es folgt ein String-Parameter, der den Namen der einzufgenden Datei
     (mit Endung!) angibt. Es sollte vermieden werden, hier Pfade mit
     anzugeben.
   * "resolution"
     3 int-Parameter folgen. VmB: in "Other Parameters".
     Die ersten beiden Zahlen geben die Gre des zu berechnenden Bildes in
     Pixeln an (der erste in x- der zweite in y-Richtung). Der letzte
     bestimmt die Auflsung des Bildes in z-Richtung (also senkrecht zum
     Bildschirm). Je grer dieser Wert ist, umso kleiner sind die Schritte,
     in denen in z-Richtung nach dem Fraktal "getastet" wird.
     Dieser Wert sollte von der Grenordnung der y-Auflsung sein. Whlt
     man ihn zu niedrig, wird zwar die Berechnung schneller, aber es kann
     sein, da die Rnder des Fraktals "ausgefranst" wirken, weil an
     bestimmten Stellen (vorzugsweise am Rand) das Fraktal nicht getroffen
     wurde. (In Anhang 5.2 ist ein Beispiele dafr zu sehen).
   * "colorscheme"
     string folgt. VmB: im Color Editor.
     Hier wird die Formel angegeben, die die Farbe des Fraktals in
     Abhngigkeit vom Punkt im Raum bestimmt. Die Formel sollte im gewhlten
     Raumausschnitt Werte zwischen 0 und 1 annehmen. Verlt sie diesen
     Wertebereich, so wird durch eine Art "floating-point-modulo" das
     Ergebnis wieder auf den Bereich zwischen 0 und 1 reduziert. Besteht die
     Palette nur aus einer einzigen Farbe, so kann als Formel einfach "0"
     geschrieben werden.
     Es sind folgende Variablen vordefiniert: x, y und z. Sie enthalten die
     x, y und z-Koordinate des Punktes im Raum, dessen Farbe berechnet
     werden soll. Es knnen Klammern zur Bestimmung der
     Abarbeitungsreihenfolge verwendet werden.
     Neben den normalen mathematischen Operationen (+,-,*,/) und dem
     Potenzieren (^) sind folgende Funktionen definiert:
     sin, cos, tan, sqr, sqrt, exp, ln, atan, asin, acos, round, trunc, abs,
     random
     sin(x): Sinus von x (x im Bogenma)
     cos(x): Cosinus von x (x im Bogenma)
     tan(x): Tangens von x (x im Bogenma)
     sqr(x): x im Quadrat. (x*x)
     sqrt(x): Wurzel aus x.
     exp(x): e^x. (e hoch x). "e" ist die Euler'sche Zahl, (2.718...)
     ln(x): Umkehrfunktion zu exp(x). Natrlicher Logarithmus.
     atan(x): Arcustangens von x. Umkehrfunktion des Tangens.
     asin(x): Arcussinus von x. Umkehrfunktion des Sinus.
     acos(x): Arcuscosinus von x. Umkehrfunktion des Cosinus.
     round(x): rundet x auf oder ab. round(2.5) = 3.0; round(2.4999) = 2.0;
     trunc(x): ergibt die grte Ganzzahl, die kleiner oder gleich x ist.
     trunc(2.0) = 2.0; trunc(2.5) = 2.0; trunc(2.999) = 2.0;
     abs(x): Betrag von x.
     random(x): Zufallszahl zwischen 0 und x.

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 auswhlen und
2D-Schnitte der Julia-Menge anfertigen). Fr Benutzer der
Benutzeroberflchen-Version ist der Abschnitt daher evtl. weniger
interessant.
Man kann das groartige 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 verfgbar. (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 zugehrigen Mandelbrot-Menge "voraus sagen"
lt.
Die Mandelbrot-Menge ist besser bekannt unter dem Namen "Apfelmnnchen".
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 hngt vom
Bereich ab, aus dem "c" gewhlt wurde. (Nicht vergessen: Jeder Punkt auf dem
Bildschirm reprsentiert eine Zahl). Man kann z.B. "c" whlen im Hauptkrper
des Apfelmnnchens, im "Kopf", einem "Nebenapfel", ...
Mit Fractint 19.3 (DOS) geht man dazu folgendermaen vor:

   * Fraktal-Typ "quat" whlen.
     Dieser Typ ist das hyperkomplexe Apfelmnnchen. Es knnen zwei
     Parameter eingebeben werden, "cj" und "ck". Diese Parameter entsprechen
     dem k- und dem l-Teil in "Quat". Vorsicht: Fractint nennt die einzelnen
     Komponenten der hyperkomplexen Zahl "1", "i", "j", "k". "Quat"
     verwendet die Bezeichnungen "e", "j", "k", "l". Noch ein anderer
     kleiner Unterschied besteht zwischen Fractint und Quat: Fractint
     benutzt die Formel xn+1 = xn2 + c, Quat xn+1 = xn2 - c.
     Das fhrt dazu, da die Komponenten von c in Quat negativ genommen
     werden mssen, um das selbe Objekt wie in Fractint zu erhalten.
     Also, zurck zu Fractint: "cj" und "ck" bestimmen also den Wert der
     beiden Dimensionen, die fr den 2D-Schnitt konstant gehalten werden.
     Sind beide Parameter "0", so erhlt man (logischerweise) das ganz
     normale Apfelmnnchen.
   * als Iterationstiefe ("Maximum Iterations" im Men "basic options <x>")
     denjenigen Wert eingeben, der auch in Quat verwendet werden soll.
     (einen wesentlich kleineren als die vorgegebenen 150, z.B. 14, hohe
     Iterationstiefen sehen bei dreidimensionalen Fraktalen nicht gut aus,
     siehe auch in 4.1 die Beschreibung des Parameters "maxiter").
   * wenn der Schnitt fertig berechnet ist (Piepston), die Leertaste
     drcken.
     Es erscheint ein Fadenkreuz, mit dem man Real- und 1. Imaginrteil der
     zu berechnenden Julia-Menge festlegt. Drckt man die Taste "n", so
     werden diese zwei Werte in der 1. Zeile angezeigt. Mit der Maus oder
     den Cursortasten kann man mit dem Fadenkreuz herumfahren, um Real- und
     1. Imaginrkomponente von "c" festzulegen. (die 2 weiteren
     Imaginrkomponenten sind bereits dadurch festgelegt, wie der 2D-Schnitt
     des Apfelmnnchens gewhlt wurde, namentlich durch die Parameter "cj"
     und "ck", s.o.)
   * Nochmals die Leertaste drcken.
     Zu dem gewhlten Wert wird die korrespondierende Julia-Menge berechnet,
     und zwar der Schnitt der 4D-Menge mit der komplexen (2D-)Ebene. Man
     kann nun wiederum den Schnitt verschieben, um eine Vorahnung zu
     bekommen, wie das Objekt dreidimensional aussieht. Dazu kann man:
   * "z" drcken.
     Man sieht einige Eingabefelder, die ersten 4 stellen die hyperkomplexe
     Zahl "c" dar, die soeben gewhlt wurde. "zj" und "zk" bestimmen, wo in
     der 4D-Julia-Menge der Schnitt gemacht werden soll. "zj" geht mit der
     Schnittebene sozusagen "in den Raum hinaus", "zk" entspricht dem
     Parameter "lvalue" in Quat. Hlt man "zk" fest und berechnet Schnitte
     fr verschiedene "zj", so erhlt man einen Eindruck des von Quat
     berechneten Objekts, indem man die verschiedenen Schnitte im Geiste
     hintereinander "stapelt".
     Der Bildschirm in Fractint sieht beispielsweise so aus:
     c1 -0.48
     ci -0.45
     cj 0.1
     ck -0.5
     zj 0
     zk 0.3
     Bailout value 0
     Das wird fr Quat in der OBJ-Datei folgendermaen bersetzt:
     c 0.48 0.45 -0.1 0.5
     lvalue 0.3
     maxiter 14
     bailout 64
     Fr "maxiter" denjenigen Wert einsetzen, der im Bildschirm "basic
     options <x>" unter "Maximum Iterations" steht.
     Der Wert "zj" bei Fractint ist fr Quat bedeutungslos, da anstelle
     eines 2D-Schnittes ein 3D-Schnitt gemacht wird.
     Steht bei Fractint unter "Bailout value" eine 0, so wird der
     Default-Wert von 64 verwendet, man mu bei Quat daher 64 angeben.
   * Drckt man wiederum die Leertaste, so gelangt man zurck zur
     Mandelbrot-Menge, das Spiel beginnt von vorne.

Viel Spa beim Entdecken!

5.2 Beispiele fr die Wirkungsweise einiger Parameter

Im Folgenden wird dargestellt, wie die Auflsung in z-Richtung ein Bild
verfremden/verflschen kann und wie man mit Antialiasing den Moire-Effekt
beseitigt. Alle Bilder sind JPEG's mit niedriger Qualitt.

 [Image]                  [Image]                  [Image]
 Bild 1: Ein Bild mit zu  Bild 2: Bei diesem Bild  Bild 3: Dies ist das
 geringer Tiefenauflsung ist die z-Auflsung      Referenzbild.
 (240): "resolution 320   deutlich erhht (2048):  Es hat die gengend hohe
 240 240". Man sieht gut  "resolution 320 240      z-Auflsung von 2048:
 die ausgefransten        2048". Die Rnder sind   "resolution 320 240
 (gezackten) Rnder der   nicht mehr ausgefranst.  2048", wie das Bild
 blau eingefrbten        Allerdings erkennt man   links.
 Objektteile. An diesen   noch leicht strende     Fr Antialiasing wird
 Stellen ist das Fraktal  Pixelmuster, die vom     der Wert 4 verwendet:
 so dnn, da es bei der  sogenannten Moire-Effekt "antialiasing 4"
 Berechnung mit 240 als   herrhren                Jeder Pixel auf dem
 z-Auflsung nicht        (beispielsweise auf den  Objekt wird also
 getroffen wird.          orangenen Bildteilen).   gemittelt aus 4x4
 Es wird kein             Mit Antialiasing kann    Unterpixeln.
 Antialiasing             man sie beseitigen. Hier
 durchgefhrt:            wird keines vorgenommen:
 "antialiasing 1"         "antialiasing 1"

5.3 Der Kreuzblick (zur echt dreidimensionalen Wahrnehmung eines Objektes)

Vielleicht ist Ihnen seit den "Magisches Auge"-Bchern bekannt, da
spezielle Blickarten (ohne Hilfsmittel wie z.B. 3D-Brillen) ganz
erstaunliche dreidimensionale Wahrnehmungen hervorrufen knnen. 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 fr das linke Auge und das linke Bild fr 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 bichen weiter weg von den Augen und schauen sie erneut
auf den Daumen, whrend Sie auf den Hintergrund achten. Probieren Sie
solange mit verschiedenen Abstnden 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 empfngt, durchaus einen Sinn ergeben, und
versucht scharfzustellen. Fr manche Menschen ist dieser Proze etwas
schwieriger (so war es fr 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 mglich, Photographien von Landschaften dreidimensional zu sehen.

5.4 Die Initialisierungsdatei(en)

Initialisierungsdateien werden dazu verwendet, Quat mit den zur Berechnung
eines Bildes ntigen Parametern zu fttern.
Benutzer einer Version mit Benutzeroberflche (Windows, X Window System):
Obwohl dieser Abschnitt auch auf diese Versionen anwendbar ist, werden ihn
die meisten Benutzer vermutlich nicht lesen mssen. 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" bentigt, in der das Objekt, die Ansicht, die Farben
und Schnittebenen definiert werden knnen. Diese Datei (und alle mittels
"include" eingefgten, s.u.) sind simple Textdateien, die mit jedem
Texteditor erstellt werden knnen. (z.B. "edit" unter DOS, "notepad" unter
Windows, "vi" unter Unix).
Die verwendete Syntax ist sehr einfach, in jeder Zeile steht ein
Schlsselwort und danach folgt eine bestimmte Anzahl von Parametern. (z.B.
definiert "viewpoint 0 0 1" den Sichtpunkt)
In dieser Initialisierungsdatei knnen andere Dateien automatisch eingefgt
werden (mittels des Schlsselwortes "include"). Es ist so mglich,
Farbverlufe 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
eingefgt, als wrde dort ihr gesamter Inhalt stehen. Die
Initialisierungsdatei dient nur dem Starten der Berechnung. Hat man erstmal
eine Berechnung begonnen, so bentigt man sie nicht mehr. Die Fraktaldaten
sind im PNG-Bild selbst gespeichert und knnen 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 ntig ist, gespeichert werden, oder es knnen 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 Fllen wohl nur eine einzige Schnittebene).

Dieses Konzept mag auf den ersten Blick kompliziert aussehen, es bietet aber
eine hohe Flexibilitt. So knnen Fraktale schnell mit anderen Farben
"ausgestattet" werden oder neue Schnittebenen hinzugefgt werden, ohne an
der Objektdefinition selbst etwas zu ndern: Es wird einfach nur eine Zeile
in der INI-Datei verndert. Aber fr alle, die das immernoch fr zu
kompliziert halten: Man kann alle Schlsselwrter auch in der
Initialisierungsdatei benutzen.
