|
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
-
c
4 float-Parameter folgen. VmB: im
Object Editor.
Die Zahlen geben Real- und 3 Imaginärteile der Konstanten "c"
in der Formel "xn+1 = xn2 - c" (oder der
anderen, die unterstützt wird) an. Die 4 floats sind 1-, i-, j- und
k-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 durchgeführt 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 gehört 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 gewählt werden (kleiner als 100): Dieser Wert erhöht
im Prinzip den Detailreichtum des Bildes, was im 2D erwünscht, im
3D aber unschön ist, da die Oberflächen der Objekte im Extremfall
unendlich zerklüftet werden.
- lvalue
ein float-Parameter folgt. VmB: im
Object Editor.
Der Wert (für die 4. Komponente eines Punktes im Raum), der die
4. Dimension repräsentiert. 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" bis "4" zulässig, die für folgende Formeln
stehen:
0 |
Classical Julia |
xn+1 = xn2 - c |
1 |
Lambda Julia |
xn+1 = cxn(1-xn) |
2 | |
xn+1 = xn*ln(xn) - c |
3 | Cubic Julia |
xn+1 = xn3 - c |
4 | |
xn+1 = xnp1 - c |
- p1, p2, p3 und p4
vier float-Parameter folgen jeweils. VmB: im
Object Editor
(nur wenn sinnvoll).
p1-p4 sind weitere Parameter für die Iterations-Formel.
Bislang wird nur p1 benötigt, und zwar gibt p1 beispielsweise
in der 5. Iterationsformel (x^p1-c) den Exponenten an. Die 4 Werte
stellen jeweils die 4 Komponenten eines Quaternions dar.
- 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, gemessen
in Einheiten des Bildkoordinatensystems.
- lxr
1 float-Parameter folgt. VmB: im
View Editor.
Gibt die Länge des "Bildschirms" auf der Bildebene im Q-Raum an.
Bestimmt so die Größe 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: im
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 für das linke Auge (die
rechte) und eine für das rechte Auge (die linke). Wenn Sie wissen,
wie man diese Bilder zu einem einzigen verschmelzen kann, können Sie
das Objekt echt dreidimensional sehen! Eine großartige Erfahrung!
Sehen Sie nach im Anhang 5.3 ("Kreuzblick"), dort steht
eine Erklärung, wie die Bilder verschmolzen werden können.
Der Wert ist die Entfernung, die der Viewpoint für das linke von
dem für das rechte Auge hat (im Q-Raum). Er sollte kleiner als lxr
sein.
- phong
2 float-Parameter folgen. VmB: im
Other Editor.
Die erste Zahl gibt die maximale Intensität 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
annähert.) (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: im
Other Editor.
Gibt an, wie hell das Umgebungslicht sein soll. Wert zwischen 0 und
1.
- antialiasing
1 int-Parameter folgt. VmB: im
Other Editor.
Um störende Moire-Effekte (regelmäßige 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 Schlüsselwort 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. Natürlich verlangsamt dies die
Berechnung um den Faktor 4 !
Wert muß zwischen 1 und 5 einschließlich liegen.
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:
- 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 Intensität von Rot, Grün und Blau (in dieser
Reihenfolge) als Werte zwischen 0.0 (keine Intensität) und 1.0 (maximale
Intensität)
- colorrange
7 float-Parameter folgen. VmB: im
Color Editor.
Die 1. Zahl gibt die Gewichtung an (siehe "color"), die nächsten
3 die Farbe, bei der der Farbverlauf starten soll, die letzten 3 die Farbe,
bei der der Farbverlauf enden soll.
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:
- plane
6 float-Parameter folgen. VmB: im
Intersection Editor.
Definiert eine Ebene, die den Raum in 2 Halbräume 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 Schlüsselwörter
- include
Fügt eine andere Textdatei ein. Das Resultat ist genauso, wie
wenn die Angaben, die in der eingefügten Datei stehen, direkt dort
stehen würden, wo include steht.
Es folgt ein String-Parameter, der den Namen der einzufügenden
Datei (mit Endung!) angibt. Es sollte vermieden werden, hier Pfade mit
anzugeben.
- resolution
3 int-Parameter folgen. VmB: in
Other Editor.
Die ersten beiden Zahlen geben die Größe des zu berechnenden
Bildes in Pixeln an (der erste in x- der zweite in y-Richtung). Der letzte
bestimmt die Auflösung des Bildes in z-Richtung (also senkrecht zum
Bildschirm). Je größer dieser Wert ist, umso kleiner sind die
Schritte, in denen in z-Richtung nach dem Fraktal "getastet" wird.
Dieser Wert sollte von der Größenordnung der y-Auflösung
sein. Wählt man ihn zu niedrig, wird zwar die Berechnung schneller,
aber es kann sein, daß die Ränder des Fraktals "ausgefranst"
wirken, weil an bestimmten Stellen (vorzugsweise am Rand) das Fraktal nicht
getroffen wurde. (In Anhang 5.2 ist ein
Beispiel dafür zu sehen).
- colorscheme
string folgt. VmB: im
Color Editor.
Hier wird die Formel angegeben, die die Farbe des Fraktals in Abhängigkeit
vom Punkt im Raum bestimmt. Die Formel sollte im gewählten Raumausschnitt
Werte zwischen 0 und 1 annehmen. Verläßt 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 können Klammern zur Bestimmung der Abarbeitungsreihenfolge
verwendet werden.
Neben den normalen mathematischen Operationen (+,-,*,/) und dem Potenzieren
(^) sind die folgenden üblichen, mathematische 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). Natürlicher 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 größte 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.
Spezielle Funktionen zur Fraktalberechnung sind:
orbite(n): Der 1-Teil des Quaternions nach n Iterationen.
orbitj(n): Der i-Teil des Quaternions nach n Iterationen.
orbitk(n): Der j-Teil des Quaternions nach n Iterationen.
orbitl(n): Der k-Teil des Quaternions nach n Iterationen.
Mit diesen orbit-Funktionen läßt sich eine Farbgebung erzielen,
die sich am Objekt selber orientiert.
|