Fraktale sind Computerkunst-Bilder, Bilder von feinen ästhetischen geometrischen Strukturen, deren Berechnung auf einer einfachen mathematischen Formel beruht. Die Faszination steckt in der Vielfalt und der Möglichkeit, unendlich in die Tiefe und Details von Fraktalen "abtauchen", heineinzommen zu können.
Es gibt Programme zum Zeichnen von Fraktalen wie Sand am Meer. Dieses Programm hier entstand als Lehrbeispiel zur Benutzung der Bibliothek GTK+. Die Zielsetzung war, ein paar Aspekte aufzunehmen, die in den meisten Fraktalzeichenprogrammen nicht so stark betont werden:
Da das Programm nur ein Beispiel sein soll und nur minimale Entwicklungszeit hinter sich hat, hat es natürlich auch einige Einschränkungen:
Basis von Fraktalen sind Formeln mit s.g. komplexen Zahlen. Eine komplexe Zahl ist eine 2-dimensionale Zahl. Man schreibt sie meist in der Form
z = x + iy.x nennt man den "Realteil", y den "Imaginärteil" der Zahl. Es gibt Rechenregeln, wie komplexe Zahlen zu addieren, multiplizieren, potenzieren sind:
Addition ist ganz einfach: z1+z2=(z1_re+z2_re + i(z1_im+z2_im) Aber Multiplikation ist nicht so einfach: z1*z2=(z1_re*z2_re-z1_im*z2_im) + i (z1_re*z2_rim+z1_im*z2_re)Normalerweise braucht man komplexe Zahlen, weil mit ihnen - so paradox es auch klingen mag - viele Rechenoperationen viel einfacher sind als mit reellen Zahlen. Man führt die Operation also im Komplexen durch und nimmt am Schluss wieder den Realteil des Ergebnisses.
In unserem Fall aber benutzen wir komplexe Zahlen für Grafik. Dazu nehmen wir uns eine Formel wie z.B.
z'=z^2+c
Eine Parabel im Komplexen. Allerdings führen wir eine "Iteration" aus; wir stecken das Ergebnis gleich wieder in die Formel rein und wiederholen die Berechnung. Dabei kann es zwei Fälle geben: Die Werte bleiben endlich gross oder sie gehen gegen Unendlich.
Im PC nähern wir "Unendlich" gegen eine Schranke, im ganzen Programm mit "iterlim" bezeichnet. Und wir iterieren eine endliche Zahl, sagen wir iter=10. Beides kann individuell eingestellt werden.
Ob die Iteration gegen Unendlich driftet oder unterhalb der Schranke iterlim bleibt, das hängt vom Startwert und von der Wahl der Konstanten c ab. Den Startwert bilden wir über die Bildschirmposition. Die x-Koorindate ist der Realteil des Startwerts, die y-Koordinate der Imaginärteil. Im einfachsten Fall zeichnen wir einen schwarzen Punkt, wenn die Iteration gegen Unendlich geht, einen weissen, wenn sie unter iterlim bleibt.
Natürlich funktioniert das nicht nur mit einer einfachen Parabel. Man kann ganz viele, beliebig komplizierte Formeln finden, die immer wieder andere Fraktale ergeben.
Je nach Art der Rechenvorschrift unterscheiden wir hier 3 Typen von Fraktale:
if sqrt(z_re^2+z_im^2)<iterlim then plot white
abs(z_re) < sqrt(iterlim) oder abs(z_im) < sqrt(iterlim)
Die Hyperbel ist übrigens eine Mandelbrotmenge, nur ist es eben eine Hyperbelformel a / z^2 + c.
Das Fraktalfenster | ...hat die Grösse 800x600 und lässt sich in der Grösse in der derzeitigen Version nicht ändern. Das wurde nicht als notwendig erachtet, da die Fraktale selbst ja fast jede beliebige Grösse haben können. Übersteigt die Grösse des Fraktals die Grösse der Sichtfensters, kann es mit der Maus vor dem Sichtfenster vorbeigeschoben werden. Man kann das Fraktal auch schnell abspeichern (siehe weiter unten) und dann mit einem Bildbetrachter (z.B. Irfanview oder ACDSee unter Windows) in einem grösseren Sichtfenster betrachten. |
Speichern | Speichert die Grafik als png unter dem Namen "omafrac.png" im Startverzeichnis. |
Mausmodus |
Schiebe Hg:Falls ein grosses Fraktal erstellt wird, kann es durch Ziehen mit der li Maustaste am Sichtfenster vorbeigezogen werden. So kann man die verschiedenen Bereiche betrachten. Ziehe Ram:Einen Rahmen ziehen, um den Zoombereich für die nächste Fraktalberechnung festzulegen. |
Bitmap-Breite/Höhe | In Pixeln. Es können fast beliebige Werte eingegeben werden (max. 10000) |
Knopf Fraktalparameter | Öffnet ein Fenster, in dem Fraktal und Fraktalparameter eingegeben werden, sowie die Parameter gespeichert oder geladen werden können. |
1:1 Proportion | Aktivieren sorgt dafür, dass bei anderer Bitmap-Breite wie -höhe das Fraktal nicht verzerrt wird. |
Zoom out | Mit re Maustaste auf das Fraktal klicken. Der Knopf gibt darauf nur einen Hinweis. |
Stop | Hier kann das Zeichnen jederzeit unterbrochen werden. Anschliessend kann das Zeichnen jedoch nicht fortgesetzt werden, bei Druck auf "Run" wird nochmals von Anfang an gestartet. |
Farben | Öffnet den Farbauswahldialog |
Hier können vier Grundfraktale ausgewählt werden. Zu den Formeln und Typen siehe Abschnitt "Typen von Fraktalen". Falls das Fraktal offene Parameter enthält, können sie hier eingestellt werden. a1 ist der Realteil, a2 der Imaginärteil, enstprechend bei b. (Bei keinem der vorprogrammierten vier Grundfraktale gibt es allerdings zur Zeit zwei offene Parameter).
Haben Sie gerade einen Fraktalausschnitt gemalt, würden Sie vielleicht gerne die Parameter, den Ausschnitt und die Farbpalette speichern. Das können Sie hier.
Entsprechend lässt sich auch eine Konfiguration laden. Die Konfiguration muss allerdings zum eingestellten Grundfraktal passen. Ansonsten ist das Laden wirkungslos.
Die acht Farbkästchen stellen eine Farbpalette dar. Sie besteht aus vier Abschnitten. Jeder Abschnitt wird durch eine Startfarbe (links) und eine Endfarbe (rechts) gekennzeichnet, die frei einstellbar ist. Dahinter wird festgelegt, wieviel Farbstufen sich dazwischen befinden sollen. Wird z.B. in allen Abschnitten "20" eingegeben, hat die Farbpalette 80 Farben in 4 x 20 Stufen. Wird eine "0" eingetragen, wird der Abschnitt ignoriert, d.h. die Farbpalette hat einen Abschnitt weniger. Wenn z.B. zweimal Null und zweimal 20 eingetragen ist, hat die Farbpalette zwei Abschnitte und zusammen 40 Farben/Farbstufen.
Eine Palette kann nicht separat, sondern nur zusammen mit der Konfiguration im Fenster "Fraktalparameter" gespeichert werden.
Um die Fraktalformeln zu ändern, muss man den Quelltext ändern und das Programm neu mit Freebasic Ver. 0.20b kompilieren. Die vier Formeldefinitionen stehen in den Routinen