Um ein 3d-Fraktal auf dem Computer zu berechnen, braucht man zunächst eine Formel, wie bei einem zweidimensionalen Fraktal auch. In diese Formel wird eine Zahl eingesetzt, die in Zusammenhang mit der Position auf dem Bildschirm steht. Nennen wir diese Zahl Startwert x0. Das Ergebnis, das die Formel liefert, nennen wir x1. x1 wird wiederum in die Formel eingesetzt und so der nächste Wert (x2) berechnet, usw. Allgemein heißt der n-te Wert xn.
Das Einsetzen geht solange, bis einer der vier Fälle auftritt:
Um ein Beispiel für eine Formel zu geben: Die Juliamengen werden
mit folgender Formel berechnet:
xn+1 = xn2
+ c
c ist hierbei ein konstanter, vorgegebener Wert.
Um graphisch darzustellen, wie sich verschiedene Startwerte x0 verhalten, (und um dem Computer entgegenzukommen, der nicht unendlich lange rechnen kann) definiert man nun einen Wert, ab dem man sagen kann, daß die xn gegen unendlich gehen. Diesen Wert nennt man oft auch "bailout". Überschreitet nun ein xn den Bailout-Wert, wird die Berechnung abgebrochen.
Falls die xn den Bailout-Wert nicht überschreiten (weil sie z.B. gegen 0 gehen), bricht man nach einer gewissen Anzahl von Rechenschritten ab. Die "gewisse Anzahl" nennt man häufig auch "maxiter" von "maximaler Iteration".
Man kann nun in einem Diagramm diejenigen Startwerte, für die die xn den Bailout-Wert nicht überschreiten, schwarz färben, während man die anderen Punkte weiß läßt. Man setzt also z.B. für x0 nacheinander ein: -2; -1.5; ...; 1; 1.5; 2;. Auf diese Art sieht man bis jetzt nur eine Linie mit einem Punktmuster auf dem Bilschirm. Damit man einen ganzen Bilschirm füllen kann, benötigt man Zahlen, die aus 2 unabhängigen Komponenten bestehen. Man setzt dann keine einfache Zahl mehr in die Formel ein, sondern ein Zahlenpaar, das die x- und die y-Koordinate des Bildschirms repräsentiert. Diese Zahlen nennt man die "komplexen Zahlen". Sie bestehen aus einem Real- und einem Imaginärteil. Es ist definiert, wie man sie addiert, subtrahiert, multipliziert, etc. Eine komplexe Zahl sieht z.B. so aus: 1 + 2i; -1 + i; 0 - 2i; ... allgemein: a + i*b, wobei a und b reelle ("normale") Zahlen sind. "i" ist sozusagen die "Markierung" für den Imaginärteil.
Die Addition zweier komplexer Zahlen g und h
g = a + b*i und h = c + d*i
ist folgendermaßen definiert:
g + h = (a + c) + (b + d)*i
Die Multiplikation: g * h = (a*c - b*d) + (a*d + b*c)*i
Falls man nun einen Schritt weitergeht und ein dreidimensionales Fraktal berechnen will, reichen 2 Komponenten (Real- und Imaginärteil) nicht aus. Man benötigt mindestens 3 Komponenten. Es gibt auch solche Zahlen: Sie heißen "Quaternionen" oder "hyperkomplexe Zahlen" (Wobei ein kleiner Unterschied besteht in der Definition der Multiplikation innerhalb der beiden Mengen). Ein Quaternion (oder auch "Hamiltonsches Quaternion") besteht aus 4 Komponenten. Jetzt hat man eine zuviel, aber das ist kein Problem, man kann eine Komponente 0 setzen oder konstant lassen, während man die anderen als dreidimensionale Koordinaten interpretiert.
Man spricht bei den Quaternionen nicht mehr von Real- und Imaginärteil,
sondern von e-, j-, k- und l-Teil, wobei der e-Teil dem Real- und der j-Teil
dem Imaginärteil der komplexen Zahlen entspricht. Allgemein sieht
also ein Quaternion (oder eine hyperkomplexe Zahl) q wie folgt aus:
q = a*e + b*j + c*k + d*l
a, b, c, d sind reelle Zahlen, e, j, k, l die "Markierungen"
für die einzelnen Teile.
Ein zweites Quaternion r nach gleichem Schema: r = w*e + x*j + y*k + z*l
Die Summe: q + r = (a+w)*e + (b+x)*j + (c+y)*k + (d+z)*l
Multiplikation:
q * r = (a*e + b*j + c*k + d*l) * (w*e + x*j + y*k + z*l)
q * r =
+ a*w*e*e + a*x*e*j + a*y*e*k + a*z*e*l
+ b*w*j*e + b*x*j*j + b*y*j*k + b*z*j*l
+ c*w*k*e + c*x*k*j + c*y*k*k + c*z*k*l
+ d*w*l*e + d*x*l*j + d*y*l*k + d*z*l*l
a*w oder b*y oder d*z zu berechnen ist kein Problem, denn diese Zahlen
sind reelle Zahlen. Das Problem ist: Was ist z.B. k*j, oder j*j, oder l*k?
Hier macht es einen Unterschied, ob man mit Quaternionen oder hyperkomplexen
Zahlen rechnet. Es gelten nämlich folgende Multiplikationstabellen:
Hyperkomplex | Quaternion | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
1.F.\2.F. | e | j | k | l | 1.F.\2.F. | e | j | k | l | |
e | e | j | k | l | e | e | j | k | l | |
j | j | -e | l | -k | j | j | -e | l | -k | |
k | k | l | -e | -j | k | k | -l | -e | j | |
l | l | -k | -j | e | l | l | k | -j | -e |
Die hyperkomplexe Multiplikation ist kommutativ, wohingegen die Quaternionen-Multiplikation
nicht kommutativ ist.
Es ergibt sich also im Fall der Quaternionen:
q * r =
+ (a*w - b*x - c*y - d*z)*e
+ (b*w + a*x + c*z - d*y)*j
+ (c*w + a*y + d*x - b*z)*k
+ (d*w + a*z + b*y - c*x)*l
Der Betrag eines Quaternions (oder einer hyperkomplexen Zahl) ist
die Wurzel aus der Summe der Quadrate der einzelnen Komponenten.
Mit Hilfe dieser Zahlen gelingt es, ein echt dreidimensionales Fraktal
zu berechnen:
Die in der Galerie sichtbaren Objekte sind alle Punkte (=Quaternionen),
die nach "maxiter" Rechenschritten (Iterationen) betragsmäßig
kleiner sind als der "bailout"-Wert. Ein typischer Wert für
"maxiter" ist 10, für "bailout" 8.
Das Erstaunliche hieran - wie bei allen Fraktalen - ist, daß diese abstrakte Vorschrift nicht zu einer wirren Menge gesetzter und gelöschter Punkte führt, sondern schöne und interessante Formen ergibt.