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.