Formeln und Paramter (9)

E009 058Wer hier etwas häufiger reinschaut, wird schon bemerkt haben, dass ich in den letzten zwei Monaten ordentlich mit Formeln experimentiert habe, die nicht die „vertrauten“ Fraktale hervorbringen. Das war meine bislang neunte Reihe von ausgedehnten Experimenten mit eigenen Formeln.

Wie üblich habe ich alle meine Experimente mit FRACTINT 20 für DOS gemacht. Meine Formeln (neben den gelungenen Experimenten auch die weniger produktiven) und die Parameter stelle ich hier wie üblich zum freien Download, damit auch andere ein wenig damit experimentieren können. Zur Nutzung der Parameter-Datei sind die Formeln erforderlich, alle darin enthaltenen Fraktale verwenden diese Formeln.

Download-Link: Formeln, neunte Versuchsreihe

Download-Link: Fraktalparameter, neunte Versuchsreihe

Es ist erforderlich, den Dateinamen zu ändern. Die Erweitung „.doc“ wurde an den Namen gehängt, damit ich die Dateien hier hochladen kann, sie muss wieder entfernt werden. Danach können die Daten in FRACTINT für DOS (und in der Unix-Version) unmittelbar verwendet werden.

Viel Spaß bei allen eigenen Experimenten. 😉

Advertisements

FliehNicht

Die meisten Fraktale entstehen, dass die komplexe Ebene in Abhängigkeit davon eingefärbt wird, nach wie vielen Iterationen eines Startwertes über eine Formel ein Wertebereich erreicht wird, in dem die Divergenz der Folge gesichert ist. Bei der klassischen Mandelbrotmenge mit ihrer einfachen quadratischen Iteration…

zn+1 = zn2 + c

…ist es zum Beispiel völlig sicher, dass die Folge divergiert, wenn z einen Absolutwert größer als 4 erreicht. In diesem Moment wird die weitere Iteration abgebrochen, und die Farbe für den Punkt (und damit auch für den Pixel in der grafischen Darstellung) wird aus der Anzahl der bis dahin zurückgelegten Iterationen ermittelt. Wenn nach einer vorgegeben, groß gewählten Anzahl von Iterationen dieser Wert nicht erreicht wird, dann wird der Startwert als Element der Mandelbrot-Menge betrachtet.

Nun kann man bei diesem Verfahren auch etwas anders vorgehen. Es ist durchaus möglich, den Wert für den Abbruch der Iteration zu verkleinern, um zu schauen, welche Bilder dabei herauskommen. Mathematisch ist dies eine Vorgehensweise ohne besonderen Sinn, aber die Formel ist sehr einfach in der nüchternen Sprache von FRACTINT 20 zu formulieren:

FliehNicht {
  if (ismand)
    c = pixel
  else
    c = p1
  endif
  z = pixel
  :
  z = sqr (z) + c
  |z| < real (p2) + 0.75
}

Die dabei entstehende Grafik verliert gegenüber der Mandelbrotmente erheblich an Details im Randbereich. Das Ergebnis sieht zunächst wie ein wenig attraktiver schwarzer Fleck aus:

E009 009

Allerdings lassen sich vom so modifizierten „Apfelmännchen“ auch Julia-artige Mengen erzeugen, die teilweise recht hübsch anzuschauen sind, wenn sie geeignet eingefärbt werden:

E009 010

E009 012

Die Verwandtschaft zu den „richtigen“ Julia-Mengen zeigt sich noch deutlich in den Formen, doch sind die filigranen Muster in eher grobe Farbflächen verwandelt, was zumindest in meinen Augen einen gewissen Reiz hat. Am hübschesten sehen die Grafiken dort aus, wo auch hübsche Juliamengen zu erwarten wären:

E009 013

Ein paar Experimente lohnt diese Formel also durchaus. Aber man hat sich auch schnell daran sattgesehen…

Ich habe in meiner Implementation den Parameter für den Fluchtradius über den Realteil des zweiten Parameters editierbar gemacht. Die hier gezeigten Grafiken wurden mit 0 als Parameter erstellt, der Fluchtradius liegt also bei drei Vierteln. Wird er erhöht, so zeigen die Grafiken immer mehr vertraute Details und werden den vertrauten Bildern immer ähnlicher. Auf diese Weise lassen sich Bilder mit einer geringeren Komplexität im Vergleich zu den „richtigen“ Fraktalen erstellen — und das ist ebenfalls ein paar Versuche wert. Wie immer gilt: Beim Experimentieren mit einem Fraktalgenerator kann man schnell die Zeit vergessen. 😉

Mandelbar und Gnirrtsch

Das Mandelbar-Fraktal ist eine triviale Abwandlung des Mandelbrot-Fraktales. Es wird nicht der vorherige Iterationswert quadriert, sondern die konjugiert komplexe Zahl. In der nüchternen Form einer Formel für FRACTINT 20 sieht das so aus:

Mandelbar {
  if (ismand)
    c = pixel
  else
    c = p1
  endif
  z = pixel
  :
  z = sqr(conj(z)) + c
  |z| < 8
}

Ich habe diese Fraktalformel vor einigen Tagen in einem Forum gefunden und war ganz erstaunt, dass ich dieses Experiment noch nie selbst gemacht habe. Die Grundfigur des Fraktales sieht durchaus nicht unvertraut aus.

E008 138

Aus einem platten, dreieckigen Körper erwächst drei Mal der verzerrte Kopfteil des „Apfelmännchens“. Vergrößerungen in diese Region hinein zeigten auch keine unerwarteten neuen Formen. Insbesondere kann man der „Antenne“ beim Hineinzoomen kaum ansehen, dass es sich nicht um die Mandelbrotmenge handelt.

Interessanter sind jedoch die gedrängten und sehr stark verzerrten „Knollen“ am Übergang zu der dreieckigen Form. Diese Knollen selbst machen nichts her, aber sie liefern Startpunkte für teilweise extrem hübsche, Julia-artige Darstellungen:

E008 137

Die Korrespondenz zwischen der Mandelbrot- und der Julia-Darstellung erbt dieses Fraktal von seinem nahen Verwandten, der vertrauten Mandelbrot-Menge.

In meinen Augen hat diese einfache Fraktalformel danach geschrieen, ein bisschen verallgemeinert zu werden. Anstelle der komplex-konjugierten Zahl könnte man doch eine beliebige andere, parametrisierbare Funktion verwenden. Diese Anpassung ist trivial, wie auch die folgende Formel zu zeigen vermag:

Mandelblah {
  if (ismand)
    c = pixel
  else
    c = p1
  endif
  z = pixel
  :
  z = sqr(fn1(z)) + c
  |z| < 20
}

Auch hier gilt, dass die Grundfiguren oft gar nicht so interessant aussehen. Natürlich ist hier, so lange man nicht gerade die ident-Funktion verwendet, keine grafische Nähe zum „Apfelmännchen“ mehr sichtbar. Auch diese Formel kann sehr schöne Julia-artige Darstellungen erzeugen:

E008 141

Die sonderbar geformten Farbflächen um diese Julia-artige Darstellung entstehen nicht etwa durch einen speziellen Algorithmus zur Einfärbung, es handelt sich um die ganz gewöhnliche Zuordnung einer Farbe in Abhängigkeit von der Anzahl der Iterationen, die benötigt wird, um den eingestellten Fluchtwert (hier 20) zu überschreiten. Die Julia-Menge selbst sieht noch recht vertraut aus, aber die Einfärbung gibt dem entstehenden Bild einen ganz eigenen Reiz, vor allem, wenn man benachbarte Werte im Außenbereich mit starken Kontrasten hervorhebt.

Als zusätzliche Verallgemeinerung kann man den Startpunkt der Iteration auch noch über eine Funktion auf die komplexe Ebene abbilden. Dieses Fraktal habe ich mit dem Kunstwort Gnirrtsch benannt. Auch hier ist die Anpassung wieder trivial:

Gnirrtsch {
  if (ismand)
    c = fn1(pixel)
  else
    c = fn1(p1)
  endif
  z = fn1(pixel)
  :
  z = fn2(sqr(z)) + c
  |z| < 20
}

Diese Formel kann — je nach Wahl der beiden Funktionen — recht skurille Abwandlungen vertrauter Fraktale generieren:

E008 152

Die Formfülle, die von dieser stark parametrisierbaren Fraktalformel erzeugt werden kann, auch nur in Ansätzen aufzuzeigen, würde den Rahmen jedes Blogbeitrages sprengen. Deshalb nur ein paar interessante Julia-Darstellungen, die ich bei meinen Experimenten gefunden habe und die hoffentlich manchem Leser Ansporn werden, eigene Experimente zu beginnen:

E008 150

E008 135

E008 130

Das letzte Bild ist in meinen Augen nicht unbedingt ästhetisch ansprechend, aber dennoch sehr interessant. Hier zeigen sich nämlich zwei verschiedene Formen in einer Julia-artigen Darstellung, die sich auf recht eigentümliche Weise begegnen. Diese Begegnung zweier verschiedener Formen findet sich auf auf allen möglichen Skalierungen wieder, sie tritt als Struktur neben die beiden unterschiedlich geformten Spiralen; insgesamt bildet sich ein ungewöhnlich formenreiches Fraktal. So etwas sieht für jemanden, der regelmäßig mit Fraktalformeln experimentiert, sehr ungewohnt aus.

Allzu gewohnt ist hingegen der folgende Anblick, der nur durch die kontrastreich gewählten Farben in seinem Äußeren verrät, dass es sich nicht um die Mandelbrotmenge handelt:

E008 153

Es ist für mich immer wieder erstaunlich, dass die gleiche Figur auch in sehr starken Abwandlungen der ursprünglichen Iteration entstehen kann. Da vergrößert man sich bei einem obskur aussehenden Fraktal in einen bestimmten Bereich hinein, der interessant aussieht, und schon steht man nach drei Zooms völlig verduzt vor König Apfelmann… 😉

Ich mache übrigens nach diesem recht langen Posting eine kreative Pause und suche nach neuen Einstiegen in die Welt der Fraktale…

Gegen den Überdruss

E008 062

Wer der allzu vertrauten Strukturen in der normalen Julia-Iteration überdrüssig geworden ist und einen Fraktalgenerator verwendet, mit dem er eigene Formeln ausprobieren kann, sollte sich nicht davon abhalten lassen, immer wieder einmal kleine Abwandlungen der quadratischen Iteration auszuprobieren. Eine Möglichkeit ist die Verwendung eines anderen Exponenten. Diese „Julia-Menge“ entsteht durch die Iteration

zn+1 = zn(2,1 – 0,05i) + c

die nur ein „klein wenig“ vom sonst üblichen Quadrieren abweicht. Durch diese kleine Abweichung entstehen Strukturen, die einerseits sehr vertraut aussehen, die aber auf der anderen Seite noch sehr ungewohnt und unverbraucht wirken. Häufig treten die Besonderheiten solcher geringfügig anderen Fraktale erst durch die Wahl einer geeigneten Palette richtig auffällig zu Tage.

Übrigens sehen die Mandelbrot-Mengen zu solchen Iterationsvorschriften mit komplexem Exponenten eigentümlich verzerrt und gefaltet aus. Auch vertraut aussehende Bereiche zeigen bei genauerer Betrachtung des Randbereiches starke Deformationen. Alles in allem erweisen sich diese Fraktale als bei weitem nicht so hübsch wie die gewohnten Julia- und Mandelbrot-Mengen.

F*ck

Ein guter Name ist mir für diese kleine Abwandlung der Manowar-Iterator nicht eingefallen, deshalb habe ich sie einfach nur F*ck genannt. Die Idee ist relativ einfach. Wird für das Manowar-Fraktal die Iteration

zn+1 = zn2 + zn-1 + c

bemüht, so mache ich dies für die F*ck-Fraktale schlicht parametrisierbar und verwende

zn+1 = f1(zn) + f2(zn-1) + c

als Iterationsformel, wobei natürlich die Funktionen f1 und f2 eine große Breite sehr verschiedener Fraktale ermöglichen. In der trockenen Sprache für eine FRACTINT-Formel sieht das folgendermaßen aus:

Fuck {
  if(ismand)
    c = pixel
  else
    c = p1
  endif
  lz = 0
  z = pixel
  :
  z = fn1(z) + fn2(lz) + c
  lz = z
  |z| < 50
}

Die folgenden Bilder geben einen kleinen Eindruck vom Formenreichtum, der mit dieser recht einfachen Formel erzeugt werden kann, ohne dass auch nur alle Möglichkeiten gestreift würden.

E007 044

Vielfach wirken die entstehenden Fraktale in der Mandelbrot-Darstellung sehr vertraut, sehen zum Teil wie nur leicht deformierte Mandelbrötchen aus. Dies gilt insbesondere für Kombinationen der quadratischen Iteration mit hyperbolischen oder trigonometrischen Funktionen.

E007 054

Die große Ähnlichkeit zur Mandelbrot-Iteration zeigt sich auch in vielen Julia-Darstellungen.

E007 045

Aber natürlich entstehen auch substanziell neue Strukturen, die nicht mehr ganz so vertraut anmuten. Vor allem die Julia-Darstellungen jener Mandelbrot-Darstellungen, die auf dem ersten Blick noch wie leicht verzerrte Apfelmännchen aussahen, können sehr überraschend sein. Ebenfalls sehr überraschend wird übrigens auch der Bedarf an Rechenzeit und die Neigung einiger dieser Fraktale zu Rundungsfehlern.

E007 057

Es bietet sich natürlich auch an, eine quadratische oder trigonometrische Iteration mit einer eher ungewöhnlichen Funktion zu kombieren, etwa dem Absolutwert oder der konjugierten Zahl. Dabei können sehr ungewöhnliche und ästhetisch durchaus ansprechende Fraktale entstehen, es kommt jedoch auch häufig zu „Fehlschüssen“…

E007 064

Auch für dieses Bild wurde eine etwas ungewöhnliche Funktion in die Iteration aufgenommen, was zu meiner eigenen Überraschung kristallartige Strukturen hervorbrachte. Wenn man doch nur vorher eine Vorstellung von den Ergebnissen hätte!

E007 040

Zum Abschluss des kleinen Rundganges durch diese Formel noch ein etwas bunteres Bild aus einer Julia-Iteration.

Wer einen Fraktalgenerator mit Formelparser hat, fühle sich aufgefordert, eigene Experimente mit dieser Formel zu machen. Das ist wesentlich interessanter als das Zuschauen bei irgendwelchen Fußballspielen. 😉

Funktionswahl

Dies ist eine einfache, aber sehr ergiebige Formel, hier in der Syntax für FRACTINT 20 angegeben:

Funktionswahl {
  ; Abhaengig davon, wie sich der Absolutwert
  ; entwickelt, wird eine Funktion ausgewaehlt.
  ; Sehr ergiebig!
  if(ismand)
    c = pixel
  else
    c = p1
  endif
  lz = 0
  z = pixel
  :
  if(|z| < |lz|)
    lz = z
    z = fn1(z) + c
  else
    lz = z
    z = fn2(z) + c
  endif
  |z| < 50
}

Was hier steht, ist eigentlich einfach. Wenn der Absolutwert der Laufvariablen bei einer Iteration kleiner geworden ist, dann wird die Funktion aus dem Parameter fn1 verwendet, sonst jene aus fn2. Es ist eine relativ triviale Abwandlung der Mandelbrot-Iteration; trägt man für beide Funktionen sqrt (Quadrat-Funktion) ein, so erhält man das altvertraute Apfelmännchen. In analoger Weise zur bekannten Mandelbrot-Menge werden hier Julia-Mengen erzeugt.

Die Julia-Mengen dieser Iteration können wunderschön aussehen. Häufig lässt sich bereits an der Mandelbrot-Darstellung erahnen, welche Elemente in ihnen auftauchen. Vielfach erinnern die Strukturen ein wenig an das vertraute Barnsley-Fraktal. Es folgen ein paar Beispiele der Fülle dieser Formel, die zu mehrstündigen Experimenten geradezu einlädt:

FWAHL11

Solche Bäume wachsen nur im Computer…

FWAHL09

Abstraktes Kreuz aus Spiralen und Farnblättern auf Türkis.

FWAHL14

Der kräuselige Griff in das große Dunkel

Diese Formel bietet sich übrigens auch für gewisse Missbräuche an, bei denen man ungewöhnliche, für Fraktale sonst wenig geeignete Funktionen verwendet. Auch damit lassen sich interessante Julia-Mengen erzeugen, die allerdings am besten durch „perverse“ Farbwahl zur Geltung kommen.

FWAHL18

Doch auch eher gewöhnliche Formeln (vor allem die trigonometrischen und hyperbolischen) führen zu Julia-Mengen, die vergessen machen, dass es sich um ein Bild aus einem Fraktalprogramm handelt. Durch geeignete Farbwahl entsteht der Eindruck abstrakter Kunst:

FWAHL03

FWAHL08

Bislang habe ich in diesem Beitrag alle Bilder verkleinert und ins JPEG-Format konvertiert. Aber mein schönstes Mitbringsel von der Reise ins Land der Fraktale gibt es hier als verlustfreies GIF:

FWAHL15

Ich war selbst überrascht… 😉

Wer ein FRACTINT zur Verfügung hat, sollte sich ruhig mal einen müßigen, verregneten Tag lang hinsetzen und eigene Experimente mit dieser Formel machen. Die Zeit vergeht wie im Flug.

Blumenmuster

E006 021

Und für die Freunde von FRACTINT 20 hier die Formel, mit der ich dieses hübsche Bild erzeugt habe. Diese Formel ist sehr experimentierstark, allerdings ist sie wegen der drei Funktionsparameter auch recht unübersichtlich. Es handelt sich einmal mehr um eine relativ triviale Abwandlung der normalen Mandelbrot-Iteration.

Kombination {
if (ismand)
  c = pixel
else
  c = p1
endif
z = pixel
ic = 0
:
  if (ic == 0)
    nz = fn1 (z)
    ic = 1
  elseif (ic == 1)
    nz = fn2 (z)
    ic = 2
  elseif (ic == 2)
    nz = fn3 (z)
    ic = 0
  endif
  z = nz * nz + c
  |z| < 50
}

Mit dieser relativ einfachen Formel kann man stundenlang Spaß haben. Genau das richtige für die kommenden Tage, die ja schnell dunkler und kühler werden.

Wenn alle drei Funktionen auf ident gesetzt werden, erhält man das vertraute „Apfelmännchen“. Das ist ein guter Ausgangspunkt, um es einmal mit anderen Funktionen zu versuchen.