V-variable Fraktale V-variable Fraktale Im Rahmen einer Zuordnung für einen Kurs Random-Graphen und Fraktale. Ich schrieb einen Bericht über V-variable Fraktale und erstellt ein Computerprogramm, um solche Fraktale in drei Dimensionen zu generieren. Der Bericht ist hauptsächlich eine Zusammenfassung der Theorie, die in den Artikeln A fraktal value random iteration algorithm und fraktale Hierarchie (arXiv link PDF) und V-variable fraktale und superfractals (arXiv link PDF), beide von Barsnley, Hutchinson und Stenflo, Aber es fügt auch ein paar Kommentare in Fußnoten und ein Abschnitt diskutieren Computer-Implementierung. Insbesondere wird kurz auf Verfahren zur Erzeugung dreidimensionaler Fraktalgrafiken unter Verwendung von Standards wie OpenGL oder Direct3D eingegangen. Einige Bilder, die von meinem Programm erzeugt werden, zeigen die Schönheit solcher Fraktale. Sie können meinen Bericht im PDF-Format (2,8 MB) lesen. Computerprogramm Das Computerprogramm zur Erzeugung von V-variablen Fraktalen nutzt den OpenGL-Standard, um mit moderner PC-Hardwareunterstützung für die Darstellung dreidimensionaler Grafiken zu kommunizieren. Es erlaubt dem Benutzer, benutzerdefinierte IFS (Iterated Function Systems) zu definieren, um V-variable Fraktale zu erzeugen, und einige Beispiele sind bereits enthalten. Die IFSs können Schritt für Schritt iteriert werden, und die Schritte können animiert werden. Definierte Transformationen, IFSs und SuperIFS werden in einer Datei gespeichert. Das Programm wurde mit Lazarus geschrieben. Ein Open-Source-Delphi-Ersatz. Statt das OpenGL API direkt zu verwenden, verwendet es eine objektorientierte Wrapper-Bibliothek namens GLScene. (Es könnte aber leicht angepasst werden, um OpenGL API-Aufrufe zu verwenden.) Sie können das Programm und seinen Quellcode hier von der Download-Seite herunterladen. Benutzerhandbuch Erste Schritte Um mit dem Computerprogramm zu beginnen, laden Sie die Windows-Binärdateien herunter, extrahieren Sie die Dateien in ein Verzeichnis und führen Sie das Programm vvfgenerator. exe aus. Sie sehen zwei Fenster: ein Hauptfenster und ein Werkzeugfenster namens Objekt-Editor. Das Hauptfenster hat eine Anzahl von Kontrollen auf der linken Seite. Wähle das Sierpinski-Item aus der Liste der V-Vraiable FractalsSuperIFSs. Klicken Sie nun auf die Schaltfläche Init unterhalb der Liste ein Dreieck im Renderbereich rechts. Eigentlich ist dies kein Dreieck, sondern ein Tetraeder. Um dies zu sehen, drehen Sie die Szene, indem Sie die Maus ziehen, während Sie die rechte Maustaste gedrückt halten. Um die Mitte der Szene zu verschieben, ziehen Sie die Maus, während Sie die linke Maustaste gedrückt halten, und halten Sie beide Maustasten gedrückt oder verwenden Sie das Scrollrad. Sobald Sie einen schönen Blick auf den Tetraeder haben, klicken Sie auf Schritt (neben der Init-Schaltfläche), um eine Iteration des Vorwärtsprozesses des SuperIFS durchzuführen. Sie können das so oft wiederholen, wie Sie möchten, aber seien Sie vorsichtig: bei jeder Iteration wird das Fraktal komplexer und die Zeit, die erforderlich ist, um die Szene zu erzeugen, wird exponentiell zunehmen. Die Anzahl der Iterationsschritte, die Sie ohne effektives Sperren des Programms durchführen können, hängt von Ihrer Computerhardware ab. Animation Control Wählen Sie nun ein anderes Fraktal, PythagorasTree, und klicken Sie auf Init. Ein Dreieck erscheint wieder. Klicken Sie auf Schritt und passen Sie die Ansicht wie gewünscht an. Wie Sie wahrscheinlich bemerkt haben, sind die Iterationsschritte animiert. Die Animation wird von der Animation Control auf der linken Seite gesteuert. Mit dem Schieberegler können Sie die Animation manuell steuern, sobald die Animationsoption aktiviert ist. In der Dropdown-Liste können Sie zwischen drei Animationsmodi wählen: amLast. Die Transformationen der größten Ebene sind animiert (das sind die Transformationen, die zuletzt auf die Puffer angewendet wurden) amFirst. Werden die Transformationen auf der kleinsten Ebene animiert (dies sind die Transformationen, die zuerst auf die Anfangspuffer angewandt werden). Alle Transformationen (auf allen Ebenen) sind gleichzeitig animiert Um ein Gefühl dafür zu bekommen, was der Unterschied zwischen diesen drei Modi ist, probieren Sie es einfach aus. Sticky-Modus Ein weiteres Steuerelement auf der linken Seite ist die Sticky Control. Es erlaubt Ihnen, alle vorherigen Iterationen in einem Bild zusammenzuführen. Es gibt drei klebrige Modi: smNone. Dont zeigen die vorherigen Iterationen bei allen smidentity. Zeigen die vorherigen Iterationen an Ort und Stelle smMove. Zeigen die vorherigen Iterationen nebeneinander an, wobei der Wert daneben als Abstand verwendet wird Der SmIdentity-Modus ist sehr nützlich für Fraktale wie PythagorasTree. Technisch könnte man dem IFS auch eine Identitätstransformation hinzufügen, aber die Sticky Control ist nur eine schnelle Möglichkeit, vorhergehende Iterationen zu zeigen oder zu verbergen sowie sie nebeneinander zu zeigen. V-variable Fraktale Die SierpinskiMixed und PythagorasTreeMixed Fraktale sind Beispiele für V-variable Fraktale. Sie verwenden mehr als ein IFS und mehr als einen Puffer. Jeder Anfangspuffer erhält eine andere Farbe, so dass Sie zwischen ihnen unterscheiden können. Mit dem Puffer Abstand unten links können Sie den Abstand zwischen den Puffern in der gerenderten Szene einstellen. Die ersten Iterationen eines 5-variablen Sierpinski-Fraktals unter Verwendung von Kontraktionen mit Faktor 12 und 13. Dies ist eine dreidimensionale Version des in Bild 3 des Artikels V-variablen Fraktalen und Superfraktalen, wie oben erwähnt (PDF). Benutzerdefinierte IFSs Sie können auch benutzerdefinierte Transformationen, IFSs und superIFS (im folgenden als VVariableFractals bezeichnet) erstellen. Dies geschieht über das Werkzeugfenster des Objekt-Editors. Dieses Fenster hat drei Abschnitte. Der obere Abschnitt repräsentiert einen Klassenbaum der zu bearbeitenden Objekte. (Jeder Klassenname beginnt mit einem Großbuchstaben T nach Konvention.) Je nachdem, welche Klasse ausgewählt wird, enthält der zweite Abschnitt alle erstellten Objekte, die zu diesem Klassentyp gehören. Im letzten Abschnitt können Sie die Eigenschaften des ausgewählten Objekts bearbeiten. Die Namen der Eigenschaften sollten meistens selbsterklärend sein. Alle Objekte haben eine Name-Eigenschaft, die eine gültige Kennung (bestehend aus alphanumerischen Zeichen, keine führende Ziffer) und eindeutig sein sollte. Einige Eigenschaften sind Listen-Wert, wenn Sie auf den Text n Elemente, eine Schaltfläche mit klicken. erscheint. Klicken Sie darauf, um den Listeneditor aufzurufen. Die Liste enthält Elemente, die in der Tat Verweise auf andere Objekte sind. Sie müssen diese Objekte zuerst erstellen. Um ein neues Objekt anzulegen, klicken Sie mit der rechten Maustaste auf die gewünschte Klasse im Klassenbaum und wählen Instanz hinzufügen. Um ein Objekt zu löschen, klicken Sie es in der Objektliste mit der rechten Maustaste an und wählen Sie Instanz entfernen. Beachten Sie, dass Sie Ihre Änderungen speichern können, indem Sie auf Datei und dann auf Speichern im Menü des Hauptfensters klicken. Die Objekthierarchie ist wie folgt: Ein TVVariableFractal enthält ein oder mehrere TIFS s. Ein TIFS enthält eine oder mehrere TTransformationen. Einer der TTransformationsarten, TCompoundTransformation. Enthält wieder TTransformationen. Das Programm ist bereit, verschiedene Puffer - und IFS-Auswahlmechanismen durch die abstrakte TSelector-Klasse hinzuzufügen. Derzeit gibt es nur eine Nachklassen-Klasse implementiert: TIIDUniformSelector. Die TIIDWeightedSelector-Klasse ist bereits vorhanden, aber nicht funktionsfähig. Sie können das UniformIID-Objekt für die BufferSelector - und IFSSelector-Eigenschaften von TVVariableFractal-Objekten verwenden. Das Programm könnte auch angepasst werden, um unterschiedliche Darstellungen der Puffer zu verwenden. Die abstrakte TBufferFactory-Klasse hat derzeit eine Nachklassenklasse: T3DGLSceneBufferFactory. Die GLScene-Komponenten verwendet, um einen dreidimensionalen Puffer darzustellen. Sie können das Objekt Default3DGLSceneBufFactory für die BufferFactory-Eigenschaft von TVVariableFractal-Objekten verwenden. Wenn Sie das Programm selbst kompilieren wollen, brauchen Sie FreePascal 2.1.4 (oder höher). Lazarus 0.9.22 (oder später). GLScene 1.0.0.1 (oder höher). Sie benötigen die Lazarus-spezifische Version von GLScene. Siehe diese Wiki-Seite für weitere Informationen. V - variable Fraktale: Fraktale mit partieller Selbstähnlichkeit Wir etablieren Eigenschaften eines neuen Fraktaltyps, der eine partielle Selbstähnlichkeit auf allen Skalen aufweist. Für jede Sammlung von iterierten Funktionen Systemen mit einer zugehörigen Wahrscheinlichkeitsverteilung und einer positiven ganzen Zahl V gibt es eine entsprechende Klasse von V - variablen Fraktalsätzen oder Maßeinheiten. Diese V-variablen Fraktale können auch von den Punkten auf dem Attraktor eines einzelnen deterministischen iterierten Funktionssystems erhalten werden. Existenz-, Eindeutigkeits - und Approximationsergebnisse werden unter normalen vertraglichen Annahmen ermittelt. Wir erhalten auch Erweiterungen einiger grundlegender Ergebnisse in Bezug auf iterierte Funktionssysteme. V - variable fraktale Superfraktale Fraktale Zufallsfraktal Iteriertes Funktionssystem Chaosspiel Markov-Kette Zitieren von Artikeln (0) Diese Arbeit wurde teilweise vom Australischen Forschungsrat unterstützt und an der Australian National University durchgeführt. Copyright 2008 Elsevier Inc. Alle Rechte vorbehalten. Empfohlene Artikel
No comments:
Post a Comment