Quat: Online-Dokumentation
Author: Dirk Meyer

# 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 "voraussagen" 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:

- Fraktal-Typ "`quat`" wählen.
Dieser Typ ist das hyperkomplexe Apfelmännchen. Es können zwei Parameter eingebeben werden, "`cj`" und "`ck`". Diese Parameter entsprechen dem k- und dem l-Teil in "Quat". Vorsicht: Fractint benutzt die Formel xn+1 = xn2 + c, Quat xn+1 = xn2- c.
Das führt dazu, daß die Komponenten von c in Quat negativ genommen werden müssen, um das selbe Objekt wie in Fractint zu erhalten.
Also, zurück zu Fractint: "`cj`" und "`ck`" bestimmen also den Wert der beiden Dimensionen, die für den 2D-Schnitt konstant gehalten werden. Sind beide Parameter "`0`", so erhält man (logischerweise) das ganz normale Apfelmännchen.
- 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 drücken.
Es erscheint ein Fadenkreuz, mit dem man Real- und 1. Imaginärteil der zu berechnenden Julia-Menge festlegt. Drückt 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. Imaginärkomponente von "c" festzulegen. (die 2 weiteren Imaginärkomponenten sind bereits dadurch festgelegt, wie der 2D-Schnitt des Apfelmännchens gewählt wurde, namentlich durch die Parameter "`cj`" und "`ck`", s.o.)
- Nochmals die Leertaste drücken.
Zu dem gewählten 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" drücken.
Man sieht einige Eingabefelder, die ersten 4 stellen die hyperkomplexe Zahl "c" dar, die soeben gewählt 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. Hält man "`zk`" fest und berechnet Schnitte für verschiedene "`zj`", so erhält 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 für Quat in der OBJ-Datei folgendermaßen übersetzt:
`c 0.48 0.45 -0.1 0.5`
`lvalue 0.3`
`maxiter 14`
`bailout 64`
Für maxiter denjenigen Wert einsetzen, der im Bildschirm "`basic options <x>`" unter "Maximum Iterations" steht.
Der Wert "`zj`" bei Fractint ist für 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.
- Drückt man wiederum die Leertaste, so gelangt man zurück zur Mandelbrot-Menge, das Spiel beginnt von vorne.

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.

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.