Fraktal zum Selberbauen

vorhergehende Artikel in: Numerik
09.02.2020

Es ist zwar schon zu spät für Weihnachten, aber da das Experiment Weihnachtsbaumkugeln benötigt ist es vllt. besser, es zu einer zeit durchzuführen, wenn die Kugeln nicht am Baum gebraucht werden...

Fraktale sind eine faszinierende Sache - manche finden bildliche Darstellungen davon sogar so hübsch, dass sie ihre Wohnungen damit ausgestalten. Im Zuge der Recherchen für neue Ideen im Bereich Chaotische Systeme stieß ich auf einen Artikel, in dem ein weihnachtliches Fraktal beschrieben wird, das ganz ohne Computer auskommt: Man nehme vier stark reflektierende Kugeln (Weihnachtsbaumkugeln) - idealerweise sind sie identisch. Dann halte und fixiere man sie so, dass sie ein Tetraeder bilden und jede Kugel die drei anderen berührt. Nun verdunkle man das Zimmer und benutze eine Lichtquelle um den Mittelpunkt des Tetraeders anzuleuchten. Anschließend ergötze man sich am Resultat.

Man kann dieses Experiment natürlich auch am Computer simulieren. Dazu benötigt man lediglich eine Software, die den Prozess des Raytracing beherrscht; Beispiele dafür sind Persistence of Vision oder Blender.

Allerdings existiert eine Einschränkung bei der Simulation dieses Prozesses im Computer (tatsächlich ist es eine weitere gemeinsamkeit mit Fraktalen): Raytracing folgt imaginären Strahlen von der Kamera aus in die Szene. Beim Auftreffen auf Hindernisse werden diese Strahlen entsprechend realer physikalischer Gesetze abgelenkt, gebrochen, reflektiert,... Dies geschieht so lange bis die strahlen auf eine Lichtquelle in der Szene treffen oder die maximale Anzahl bon Interaktionen mit Objekten in der Szene erreicht ist. In unserem Experiment entspricht diese Maximalzahl (die auch die für die Berechnung des resultierenden Bildes benötigte Rechenzeit beeinflusst) den vorgegebenen maximalen Iterationen zum Beispiel bei der Berechung des Mandelbrot-Fraktals oder Apfelmännchens.

Beim Raytracing kann man den Einfluss dieses Parameters bei unserem Experiment sehr gut erkennen: die folgenden Bilder setzen die maximale Grenze auf die Werte von 1 bis 5 (Wir schauen hier durch eine der Lücken zwischen jeweils drei der Kugeln auf den Mittelpunkt zwischen ihnen, die Szene enthält genau eine weiße Lichtquelle, die genau hinter der Kamera sitzt):

Screenshot Weihnachtsbaumkugelfraktal berechnet mit PovRay, max_trace_level=1

Screenshot Weihnachtsbaumkugelfraktal berechnet mit PovRay, max_trace_level=2

Screenshot Weihnachtsbaumkugelfraktal berechnet mit PovRay, max_trace_level=3

Screenshot Weihnachtsbaumkugelfraktal berechnet mit PovRay, max_trace_level=4

Screenshot Weihnachtsbaumkugelfraktal berechnet mit PovRay, max_trace_level=5

Wer sich auf die reflektionen der Kugeln konzentriert, kann sogar herausfinden, dass man mittels Abzählen der Reflektionen diesen Wert aus dem jeweiligen Bild bestimmen kann...

Zum Abschluss noch ein Bild, bei dem ich maximal 100 Interaktionen mit Szenenobjekten zugelassen habe und drei Lichtquellen benutze, von denen eine blau leuchtet, eine rot und eine grün - sie sind so angeordnet, dass sie jeweils durch eine andere Lücke strahlen. Die Dateien zum Nachstellen und selbst Experimentieren habe ich unten angehängt - benutzt werden sie ganz einfach per

povray wada.ini

Screenshot Weihnachtsbaumkugelfraktal beleuchtet mit mehreren unterschiedlich farbigen Lichtquellen, berechnet mit PovRay, max_trace_level=100

Lizenz
PovRay Ini-Datei
PovRay Szenenbeschreibung

Artikel, die hierher verlinken

Magnetisches Pendel

22.03.2020

da seit meinem letzten Artikel zum Thema Chaos und - im weiteren Sinne Fraktale - bereits einige Zeit vergangen ist hier noch ein Nachtrag aus den Untiefen meines Massenspeichers (Festplatte darf man ja heute nicht mehr sagen...)

Alle Artikel rss Wochenübersicht Monatsübersicht Github Repositories Gitlab Repositories Mastodon Über mich home xmpp


Vor 5 Jahren hier im Blog

  • Fährnisse des Buildprozesses unter Windows

    17.07.2019

    Nachdem ich begonnen hatte, mich mit der Beschleunigung der Berechnung des Mandelbrot-Fraktals unter Zuhilfenahme der Shadereinheiten in Graphikkarten zu beschäftigen und erste Erfolge feiern konnte, wollte ich das mal auf einer richtigen Graphikkarte ausprobieren...

    Weiterlesen...

Neueste Artikel

  • Datenvalidierung UTF8 mit BiDi-Steuerzeichen (TrojanSource 2.0)

    Ich bin heute nochmal inspiriert worden, weiter über die Trojan Source Vulnerability nachzudenken. Meiner Meinung nach bestehen hier noch Probleme - speziell bei Nutzereingaben oder Daten, die über externe Schnittstellen ampfangen werden.

    Weiterlesen...
  • OpenStreetMap Navi als Docker-Container

    Ich habe die auf OpenStreetMap basierende OpenSource Navigationslösung Graphhopper in einen Docker-Container gepackt und als neuestes Mitglied in meinem Docker-Zoo willkommen geheißen.

    Weiterlesen...
  • SQL-Aggregatfunktionen in SQLite als BeanShell-Scripts

    Ich habe neulich über eine Möglichkeit berichtet, SQLite mittels der sQLshell und Beanshell-Skripten um SQL-Funktionen zu erweitern. In diesem Artikel versprach ich auch, über eine solche Möglichkeit für Aggregatfunktionen zu berichten.

    Weiterlesen...

Manche nennen es Blog, manche Web-Seite - ich schreibe hier hin und wieder über meine Erlebnisse, Rückschläge und Erleuchtungen bei meinen Hobbies.

Wer daran teilhaben und eventuell sogar davon profitieren möchte, muß damit leben, daß ich hin und wieder kleine Ausflüge in Bereiche mache, die nichts mit IT, Administration oder Softwareentwicklung zu tun haben.

Ich wünsche allen Lesern viel Spaß und hin und wieder einen kleinen AHA!-Effekt...

PS: Meine öffentlichen GitHub-Repositories findet man hier - meine öffentlichen GitLab-Repositories finden sich dagegen hier.