Fractals and Landscape

Lucas Schmid, Raphael Zimmermann, Julian Dominguez

 

Fraktale in der theoretischen Physik


Mandelbrot war der erste Physiker welche sich mit der Geometrie von Objekten beschäftig hat.
Fraktale Geometrie kann man in zwei Rahmen unterteilen, Non-Random und Random Fraktale.
Non-Random Fraktale hat als wichtigste Eigenschaft, dass man die Entwicklung von den Bildern von den Objekten in voraus sagen kann. Ein typisches Beispiel dafür wäre das Sierpinski Dreieck.
Random Fraktale kann beschrieben werden als die Spur, welche eine Ameise hinterlassen würde. In der Beschreibung von diesen Bildern spielt die Wahrscheinlichkeitsrechnung eine sehr wichtige Rolle. In der Beschreibung von diesem Bereich von fraktaler Geometrie gibt es zwei Arten von Spuren, das Self avoiding und das Random walk.
Die Self avoiding Spur ist eine Spur, die es nicht erlaubt ist, über einen Punkt zweimal zu gehen. In einem Random walk ist dies aber erlaubt.

Literatur:
"From Newton to Mandelbrot"
D. Stauffer
H.E.Stanley
Springer

Landschaftsgenerator

Das Ziel unseres Seminars war einen Algorithmus zu entwickeln, der eine fraktale Landschaft generiert und dazu ein Programm zu schreiben, welches diese Landschaft visualisiert. Wir haben zwei Algorithmen gefunden. Der erste erzeugt ein Non-Random, der zweite ein Random Fraktal.

Aufbau der Landschaft

Wir legen eine quadratische Grundfläche von 128 x 128 Punkten fest und weisen jedem Punkt einen X und Y Koordinate zu. Die Höhe, die der Z Koordinate entspricht, soll durch den Algorithmus berechnet werden.

Non-Random Algorithmus

Die vier Eckpunkte der Grundfläche haben eine zufällig gewählte Höhe, jene ist aber während einer Generierphase nicht veränderbar. Der Algorithmus errechnet die Z-Koordinate für die Seitenmittelpunkte und den Diagonalenschnittpunkt des Quadrates. Die Höhenwerte der angrenzenden Eckpunkte ergeben arithmetisch gemittelt die Höhe des Seitenmittelpunktes. Diese vier neu errechneten Werte summieren wir und teilen durch die Zahl 3.75 . Das Resultat weisen wir als Höhe dem Quadratmittelpunkt zu. Den Betrag des Teilers auf 3.75 zu setzen ist zufällig. Jedoch erwies sich dieser Wert aus der Erfahrung mit dem Programm als interessantester.

Random Algorithmus

Wir legen ein quadratisch angelegtes Raster über die Landschaft, dessen Auflösung innerhalb eines vorgegebenen Bereiches wählbar ist. Jedem Rasterpunkt wird eine zufällig generierte Zahl aus einem festgelegtem Intervall als Höhe zugeordnet. Der Algorithmus errechnet die fehlenden Z-Koordinaten durch Verfeinerung des Rasters. Dem Mittelpunkt zweier Rasterpunkte wird das arithmetische Mittel aus den angrenzenden Höhen zugewiesen, zusätzlich verändern wir den Wert um eine Random-Zahl, die in einem wählbaren Prozentbereich des Wertes liegt.

 

Die Darstellung der Landschaft

Um die Landschaft darzustellen, schrieben wir ein kleines C++-Programm, welches die OpenGL-Library benutzt. Alle errechneten Punkte der Landschaft sind Eckpunkte von kleinen Dreiecken, so dass ein ganzes Netz solcher Dreiecke entsteht, welches das Programm dreidimensional abbildet.

Damit man sich die Landschaft besser vorstellen kann, programmierten wir sechs verschiedene Farbschemas. Dadurch bekommt man den Eindruck, dass man sich in einer Gebirgslandschaft, Unterwasserwelt, Wüste, oder auf einem Gletscher befindet. Diesen Effekt erreichten wir, indem wir die Farbe einer Dreiecksfläche als Funktion der Höhe berechneten. Man kann vom einen zum anderen Farbschema über das Kontextmenu oder direkt über die Tastatur wechseln.

Einen speziellen Effekt programmierten wir für die Gebirgslandschaft: Mit der Taste 'l' kann man den Seespiegel ansteigen lassen. Über die Taste 'n' variiert man die Schneegrenze, so dass man eine Sommer- oder eine Winterlandschaft erhält.

Die Feinheit des Rasters im Random-Algorithmus kann mit der Taste 'p' verändert werden. Über die Taste 'r' variiert man die Randomzahl.

Navigation

Das Navigieren durch die Landschaft erfolgt über die Tastatur und die Maus:

vorwärts: w

rückwärts: s

links: a

rechts: d

hinauf: mittlere Maustaste gedrückt, Mausbewegung nach unten

hinab: mittlere Maustaste gedrückt, Mausbewegung nach oben

Die Blickrichtung ändert man mit gedrückter linker Maustaste und einer Mausbewegung in die gewünschte Richtung.

Download Software

Back to the main page of the seminar