Wie programmiert man ein Fraktal?
Ich habe keine Erfahrung mit der Programmierung von fraktalen. Natürlich habe ich gesehen, die berühmten Mandelbrot-Bildern und so.
Können Sie mir mit einfachen algorithmen für Fraktale.
Programmiersprache wirklich egal, aber ich bin am meisten vertraut mit actionscript, C#, Java.
Ich weiß, dass wenn ich google Fraktale, ich bekomme eine Menge von (komplizierten) Informationen, aber ich möchte beginnen mit einem einfachen Algorithmus und mit ihm spielen.
Vorschläge zur Verbesserung der auf der basic-Algorithmus sind ebenso willkommen, wie wie man Sie in diesen schönen Farben und so.
InformationsquelleAutor der Frage Sander Versluys | 2009-01-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Programmierung der Mandelbrot ist einfach.
Mein quick-n-dirty-code ist unten (nicht garantiert bug-frei, aber eine gute Gliederung).
Hier ist die Gliederung:
Die Mandelbrot-Menge liegt in den Komplexen-Netz vollständig innerhalb eines Kreises mit radius 2.
Also, starten Sie durch Scannen jeder Punkt in diesem rechteckigen Bereich.
Jeder Punkt repräsentiert eine Komplexe Zahl (x + yi).
Durchlaufen, die komplexe Zahl:
[new value] = [old-value]^2 + [original-value]
während der Verfolgung von zwei Dingen:1.) die Anzahl der Iterationen
2.) der Abstand von [neuer-Wert] von der Herkunft.
Wenn Sie erreichen die Maximale Anzahl der Iterationen, sind Sie fertig.
Wenn die Entfernung vom Ursprung größer ist als 2, ist man fertig.
Wenn Sie fertig sind, Farbe des ursprünglichen pixels abhängig von der Anzahl der Iterationen, die Sie getan haben.
Dann gehen Sie zum nächsten pixel.
Einige details ausgelassen sind:
1.) Lernen Sie genau das, was das Quadrat einer Komplexen Zahl ist und wie man es berechnet.
2.) Herauszufinden, wie das zu übersetzen (-2,2) rechteckigen Bereich auf dem Bildschirm-Koordinaten.
InformationsquelleAutor der Antwort abelenky
Sollten Sie in der Tat beginnen Sie mit der Mandelbrot-Mengeund verstehen, was es wirklich ist.
Die Idee dahinter ist relativ einfach. Beginnen Sie mit einer Funktion der komplexen Variablen
wobei z eine komplexe variable und C ist eine komplexe Konstante. Jetzt können Sie die Iteration ab z = 0, d.h. berechnen Sie z1 = f(0), z2 = f(z1), z3 = f(z2) und so weiter. Die Menge dieser Konstanten C, für welche die Folge z1, z2, z3, ... ist begrenztd.h. es geht nicht bis unendlich, ist die Mandelbrot-Menge (das schwarze set in der Abbildung auf der Wikipedia-Seite).
In der Praxis, zum zeichnen der Mandelbrot-Menge sollten Sie:
Die erstaunliche Tatsache über Fraktale ist, wie wir erhalten können, enorm Komplex (insbesondere die Grenze der Mandelbrot-Menge) von leicht und scheinbar harmlos Anforderungen.
Genießen!
InformationsquelleAutor der Antwort Federico A. Ramponi
Wenn komplexe zahlen geben Sie Kopfschmerzen, gibt es eine Breite Palette von fraktalen, die formuliert werden kann, mit einem L-system. Dies erfordert ein paar Schichten interagieren, aber jeder ist interessant, in den eigenen rechten.
Zuerst müssen Sie eine Schildkröte. Vorwärts, Zurück, Links, Rechts, Pen -, Pen-down. Es gibt viele lustige Formen mit turtle-Grafik mit turtle-geometrie auch ohne ein L-system fahren. Suche nach "LOGO-Grafiken" oder "Turtle-Grafik". Eine vollständige LOGO system ist in der Tat ein Lisp Programmier-Umgebung mithilfe eines unparenthesized Cambridge Polnisch syntax. Aber Sie haben nicht zu gehen fast so weit, um einige schöne Bilder mit der turtle-Konzept.
Dann müssen Sie eine Ebene, die zur Ausführung eines L-Systems. L-Systeme sind in Bezug auf Post-Systeme und Semi-Thue-Systemeund wie Viren, zum Beispiel, Sie überbrücken die Grenze der Turing-Vollständigkeit. Das Konzept ist string-rewriting. Es kann implementiert werden, der als makro-expansion oder ein Verfahren mit extra-Steuerelemente gebunden die Rekursion. Wenn mit makro-expansion (wie im Beispiel unten), müssen Sie weiterhin ein Verfahren zum anzeigen von Symbolen zur turtle-Befehle, und ein Verfahren zum Durchlaufen der Zeichenkette oder das array zu laufen, die codiert turtle-Programm. Für eine begrenzt-Rekursion Verfahren ( zB. ) Betten Sie die turtle-Befehle in die Verfahren und entweder hinzufügen Rekursion-level-Prüfungen zu einzelnen Verfahren oder Faktor es sich um eine handler-Funktion.
Hier ist ein Beispiel für einen Pythagoras Baum in postscript verwenden der makro-expansion und einer sehr gekürzten Satz von turtle-Befehle. Für einige Beispiele in python und mathematica, siehe meine code golf challenge.
InformationsquelleAutor der Antwort luser droog
Es ist ein tolles Buch,Chaos und Fraktaleeinfache Beispiel-code am Ende jedes Kapitels, die einige Fraktale oder andere Beispiel. Vor langer Zeit, als ich das Buch Las, habe ich konvertiert jede sample-Programm (in einigen Basic-Dialekt) in ein Java-applet, das läuft auf einer web-Seite. Die applets sind hier: http://hewgill.com/chaos-and-fractals/
Einer der Proben ist eine einfache Mandelbrot-Implementierung.
InformationsquelleAutor der Antwort Greg Hewgill
Weiteres hervorragendes Fraktale zu lernen, ist das Sierpinski Dreieck, Fraktal.
Grundsätzlich, ziehen drei Ecken eines Dreiecks (eines gleichseitigen wird bevorzugt, aber jedem Dreieck wird die Arbeit), dann starten Sie einen Punkt P an einer dieser Ecken. Verschieben Sie P auf halbem Weg zu den 3 Ecken nach dem Zufallsprinzip, und zeichnen Sie einen Punkt dort. Wieder bewegen Sie P auf halbem Weg in Richtung einer zufälligen Ecke, ziehen, und wiederholen Sie.
Würden Sie denken, dass die zufällige Bewegung schaffen würde, die ein zufälliges Ergebnis, aber es ist wirklich nicht.
Referenz: http://en.wikipedia.org/wiki/Sierpinski_triangle
InformationsquelleAutor der Antwort abelenky
Das Sierpinski Dreieck und die Koch-Kurve sind spezielle Arten von flame fractals. Flamme Fraktale sind eine sehr verallgemeinerten Typ der Iterierten Funktion system, da es verwendet nicht-lineare Funktionen.
Einen Algorithmus für das IFS:es sind wie folgt:
Start with a random point.
Wiederholen Sie die folgenden, viele Male (eine million mindestens, je nach Größe des finalen Bilds):
Apply one of N predefined transformations (matrix transformations or similar) to the point. An example would be that multiply each coordinate with 0.5.
Plot the new point on the screen.
Wenn der Punkt außerhalb des Bildschirms, wählen Sie zufällig eine neue in den Bildschirm statt.
Wenn Sie möchten, schöne Farben, lassen Sie die Farbe auf die zuletzt verwendete transformation.
InformationsquelleAutor der Antwort Per Alexandersson
Ich würde beginnen mit etwas einfach, wie ein Koch-Schneeflocke. Es ist ein einfacher Prozess, eine Linie und verwandelt es, dann wiederholen Sie den Prozess rekursiv bis es sieht gut aus-o.
Etwas super einfaches wie die Einnahme von 2 Punkten (a-Linie) und das hinzufügen einer 3. Punkt (Ecke), dann die Wiederholung an jedem neuen Abschnitt erstellt wird.
InformationsquelleAutor der Antwort Dave Baghdanov
Habe ich eine Reihe von tutorials und code in C# geschrieben auf meinen blog zu generieren, durchaus ein paar fractals einschließlich die Mandelbrot, Julia, Sierpinski -, Plasma -, Farn-und Newton-Rhapson Fraktale. Ich habe auch den vollständigen Quellcode für alle die Fraktale erwähnt, die in den tutorials stehen zum download aus der selben Lage.
InformationsquelleAutor der Antwort Serge Meunier
Ich denke, Sie können nicht sehen, Fraktale als einen Algorithmus oder etwas zu Programmieren. Fraktale ist ein Konzept! Es ist ein mathematisches Konzept, detaillierte Muster, die sich wiederholen.
Daher können Sie erstellen, die eine Fraktale in vielen Arten, mit unterschiedlichen Ansätzen, wie im Bild unten gezeigt.
Wählen Sie einen Ansatz und dann untersuchen, wie es zu implementieren. Diese vier Beispiele wurden durchgeführt unter Verwendung Marvin Rahmen. Die source codes sind verfügbar hier
InformationsquelleAutor der Antwort Gabriel Ambrósio Archanjo
Die mandelbrot-Menge wird erzeugt, indem wiederholt der Auswertung einer Funktion, bis es überläuft (einige definierte limit), dann die überprüfung, wie lange es dauerte, Sie zu überlaufen.
Pseudocode:
Hinweise:
Wert eine komplexe Zahl ist. eine komplexe Zahl (a+bich) im Quadrat zu geben (eina-b*b+2*abich). Sie müssen einen komplexen Typ, oder auch, daß die Berechnung in der Schleife.
InformationsquelleAutor der Antwort Jimmy
Hier ist eine einfache und leicht zu verstehen von code in Java für mandelbrot-und andere Fraktale Beispiele
http://code.google.com/p/gaima/wiki/VLFImages
Laden Sie einfach die BuildFractal.jar um es zu testen in Java und führen Sie mit dem Befehl:
java -Xmx1500M -jar BuildFractal.jar 1000 1000 Standard-MANDELBROT -
Der Quellcode ist auch frei heruntergeladen/erkunden/Bearbeiten/erweitern.
InformationsquelleAutor der Antwort reddev
Gut, einfach und grafisch Ansprechend nicht wirklich hand in hand gehen. Wenn Sie ernsthaft über die Programmierung von fraktalen, ich schlage vor, Lesen auf iterierten funktionssystemen und die Fortschritte, die gemacht wurden zu Rendern.
http://flam3.com/flame_draves.pdf
InformationsquelleAutor der Antwort Algorias
Menschen über verwenden, finden Sie die Mittelpunkte für die sierpinski-und Koch würde ich viel eher empfehlen das kopieren von Formen, zu skalieren, und dann übersetzen Sie Sie zu erreichen "Fraktale" - Effekt.
Pseudo-code in Java für sierpinski würde wie folgt Aussehen:
InformationsquelleAutor der Antwort faeophyta
Manchmal habe ich das Programm Fraktale zum Spaß und als Herausforderung. Sie finden Sie hier. Der code ist in Javascript geschrieben mit dem P5.js Bibliothek und können direkt aus der HTML-source-code.
Für die, die ich gesehen habe, die algorithmen sind sehr einfach, nur finden das Kern-element und wiederholen Sie über und über. Ich mache es mit rekursiven Funktionen, sondern kann anders gemacht werden.
InformationsquelleAutor der Antwort 2dvisio