MENGER-SCHWAMM
SoPra 2000 Thomas Wahl, Michael Römer
Dieses Programm erzeugt ein Fraktal, den Menger-Schwamm,
implementiert in VC++ durch Verwendung von OpenGL Funktionen.
Systemvorraussetzungen : Windows 95, 98, NT, OpenGl fähige
Grafikkarte (alpha blending), optimiert für SiliconGraphics 320.
Verwendet wird die Auflösung 1600x1024, und aufgrund
der Detailgenauigkeit ist man auf eine Iterationsanzahl von höchstens
4 beschränkt.
Das Fraktal wird rekursiv, von unten nach oben aufgebaut.
Dies erfolgt durch mehrmaliges Kopieren auf jeder Rekursionsstufe. Dies
hat den Vorteil, daß man nicht jeden Würfel einzeln zeichnen
muß, und man dadurch eine lineare Komplexität erreicht.
Zunächst einmal wird ein 2D-Würfel
erzeugt und als Liste gespeichert. Von diesem Würfel wird nun ausgegangen.
Man steigt die Rekursionsebenen hinab und berechnet mit dem Skalierungsfaktor
1/3 jeweils die aktuelle Größe eines Würfels. Auf der untersten
Ebene wird unter Verwendung von doublebuffering mit dem Zeichnen begonnen.
Es wird immer in der linken unteren hinteren Ecke begonnen zu zeichnen.
Der Ausgangswürfel wird in den Hintergrund-Buffer geschrieben, danach
die Position jedes Würfels in Abhängigkeit seiner aktuellen Größe
berechnet und durch 20 maliges Kopieren als Menger-Schwamm der aktuellen
Stufe in den Vordergrund-Buffer gezeichnet. Das entstandene Bild ist der
Ausgangswürfel der nächsten Stufe.
Durch hochwandern in den Rekursionsebenen
wird so der Menger-Schwamm der eingegebenen Iterationsanzahl erstellt.
|
Screenshots
0 Iterationen
Zeitdauer : 10,4 ms |
1 Iteration
Zeitdauer : 44,6 ms |
2 Iterationen
Zeitdauer : 48,3 ms |
3 Iterationen
Zeitdauer : 50,5 ms |
4 Iterationen
Zeitdauer : 52,9 ms |
|
Aufbau des Menger-Schwamms der 2. Iteration
| 1. Der Ausgangswürfel wird an die linke untere hintere Ecke gezeichnet. |
2. Hier wurde er 20 mal kopiert und an die richtige Position gezeichnet.
7 mal wurde er ausgelassen. |
3. Der Würfel aus 2. wurde nun seinerseits 20 mal kopiert, gezeichnet
und 7 mal ausgelassen. |
|
Mails
an :