Saturday 4 November 2017

Waclaw Sierpinski Fraktale Forex


Lodes Computer Graphics Tutorial Sierpinski Fractals Inhaltsverzeichnis Einleitung Nach Waclaw Sierpinski, einem polnischen Mathematiker, der von 1882 bis 1969 lebte, gibt es ziemlich viele Fraktale. Dazu gehören das Sierpinski Triangle, der Sierpinski - Teppich, die Sierpinski - Pyramide (die 3D - Version von Das Sierpinski-Dreieck) und der Sierpinski-Würfel (die 3D-Version des Sierpinski-Teppichs). Die 2D-Figuren werden hier beschrieben. Sierpinski-Dreieck Das Sierpinski-Dreieck, auch Sierpinski-Dichtung und Sierpinski-Sieve genannt, kann von Hand wie folgt gezogen werden: Beginnen Sie mit einem einzigen Dreieck. Dies ist das einzige Dreieck in dieser Richtung, alle anderen werden auf den Kopf stellen: Innerhalb dieses Dreiecks, zeichne ein kleineres umgedrehtes Dreieck. Seine Ecken sollten genau in den Zentren der Seiten des großen Dreiecks liegen: Jetzt zeichnen Sie 3 kleinere Dreiecke in jedem der 3 Dreiecke, die nach oben zeigen, wieder mit den Ecken in den Zentren der Seiten der Dreiecke, die nach oben zeigen: Nun sind 9 Dreiecke nach oben gerichtet. In jedem dieser 9 ziehen Sie wieder kleinere umgedrehte Dreiecke: In den 27 Dreiecken, die nach oben zeigen, zeichnen Sie wieder 27 Dreiecke, die nach unten zeigen: Nach unendlichen Schritten, und wenn alle Dreiecke nach oben gefüllt würden, haben Sie das Sierpinski Sieve. Jeder Schritt, mehr Dreiecke müssen gezogen werden. Dies ist ein rekursiver Prozess, und es kann die gleiche Weise mit einem Computer gezeichnet werden. Mit Rekursion Nun programmiere nun das, was von Hand auf den Computer gezogen wurde, indem du eine Dreieck-Zeichnungsfunktion machst, die sich 3 mal wieder anruft, bis n Schritte von Rekursionen erreicht sind. Dieses Programm ist so gemacht, dass es für jedes anfängliche Dreieck funktioniert, es muss nicht symmetrisch sein, die einzige Bedingung ist, dass die Ecken innerhalb des Bildschirms liegen. Die Hauptfunktion richtet den Bildschirm ein und ruft die Funktion drawSierpinski auf. Die drawSierpinski-Funktion selbst wird nur ein Dreieck zeichnen: die erste, die nach oben zeigt. Dann rufen Sie die Funktion subTriangle auf, und das ist die eigentliche rekursive Funktion, die alle umgedrehten Dreiecke zeichnet. Die Funktion subTriangle zeichnet ein einziges umgedrehtes Dreieck, mit den 3 Ecken geben Sie es mit seinen Parametern. Dann rufen Sie sich 3 mal wieder an, um 3 kleinere Dreiecke zu zeichnen. Für diese 3 Dreiecke werden natürlich neue Ecken verwendet, die zu berechnen sind. Im folgenden Bild, wenn das schwarze Dreieck das große Dreieck ist, hat die subTriangle-Funktion gezeichnet, dann sind die drei roten Dreiecke die neuen, die berechnet werden müssen: Die Ecken des großen Dreiecks sind a1, a2 und a3. Die Ecken eines der kleineren Dreiecke sind b1, b2 und b3, wie man auf dem Bild sehen kann. Wenn wir alle diese Punkte als Vektoren sehen, sind die Formeln für die Punkte b (mit den Punkten a bekannt): b3 (a1 a2) 2, weil b3 in der Mitte zwischen a1 und a2 liegt, ist dieser Punkt der Durchschnitt von A1 und a2 b1 b3 (a1 - a3) 2: Wenn Sie gut untersuchen, sehen Sie, dass der Punkt b1 die Summe aus dem Punkt b3 und dem Vektor (a1 - a3) 2 ist, dessen durchgeteilt durch 2, weil die entsprechende Seite der Kleineres dreieck ist halb so groß B2 b3 (a2 - a3) 2: das ist der anderen Formel sehr ähnlich, aber mit der anderen Seite. Für die anderen 2 kleinen Dreiecke ist etwas Ähnliches getan. Im Code, wir arent mit einer Vektorklasse, also sind x und y getrennte Variablen, und wegen der Art und Weise, wie Vektor-Additionen arbeiten, müssen wir einfach das Gleiche zweimal tun, einmal für x und einmal für y, mit demselben Formeln Für die Koordinaten der Dreiecksecken werden Gleitkommazahlen für mehr Präzision verwendet. Mit diesem Wissen kann das Programm gemacht werden, die Kommentare in den unten stehenden Code werden erklären, wie es funktioniert: Heres, was du nach dem Ausführen des Programms siehst: Mit AND Die oben angegebene Methode ist nur eine der vielen Möglichkeiten, Sierpinski Triangles zu zeichnen. Eine dieser Möglichkeiten ist mit dem AND-Operator. Wenn Sie von einem Pixel die x-Koordinate als Ganzzahl und die y-Koordinate als Ganzzahl nehmen und den AND-Operator auf sie verwenden, wenn das Ergebnis 0 ist, zeichne ein Pixel von einer Farbe, andernfalls ein anderes. Youll dann sehen Sie ein Sierpinski-Dreieck Pop-up Der AND-Operator auf zwei Integers, nimmt beide Integer als Binärzahl und verwendet AND auf jedem der entsprechenden Bits. Der AND-Operator auf Bits arbeitet wie folgt :: Dies geschieht für jedes Bit der Ganzzahl, und nur wenn die resultierende ganze Zahl in binärer 0000000000000000 ist, wird dem Pixel eine andere Farbe gegeben. Der Code ist eine sehr einfache Doppelschleife, die durch jedes Pixel geht und prüft, ob x amp y 0 ist oder nicht, wobei amp der binäre UND-Operator in C ist. Durch die Verwendung von x amp y innerhalb einer if-Bedingung, ist es nur falsch in der Case x amp y ist 0, und in allen anderen Fällen wird ein weißes Pixel gezeichnet, so dass das Ergebnis ein schwarzes sierpinski Dreieck auf einem weißen Hintergrund sein wird. Das Ergebnis sieht am besten aus, wenn die Bildschirmgrößen Potenzen von 2 sind, sonst sehen Sie nur einen Teil des Dreiecks. Mit einer zufälligen Funktion Eine weitere ganz andere Art, eine Annäherung des Sierpinski-Dreiecks zu bearbeiten, wie folgt: 1) definieren 3 Punkte mit Koordinaten: a (ax, ay), b (bx, by) und c (cx, cy). Diese werden die Ecken des großen äußeren Dreiecks. 2) definieren einen anderen Punkt, p (px, py) und legen ihn in eine Ecke des Dreiecks (z. B. px axe und py ay). 3) einen Punkt an der Stelle (px, py) mit einem Bleistift 4) rollen eine theoretische Düse mit 3 Seiten (Seite 0, Seite 1 und Seite 2), oder einfach nur eine zufällige Wahl zwischen 0, 1 und 2. 5) Ändern Sie nun die Koordinaten von Punkt p, je nachdem, welche Nummer Sie gerollt haben: Wenn Sie 0, p (pa) 2 rollten, wenn Sie 1, p (pb) 2 rollten, wenn Sie 2, p (pc) 2 6 rollten, gehen Sie zurück zu Schritt 2, dort platzieren Sie den Punkt an der neuen Position von p, und halten Sie durchschleifen durch diese, bis Sie müde werden. Obwohl der ganze Prozess randomisiert ist, nach genug Schritten, wird das Ergebnis mehr und mehr wie ein Sierpinski-Dreieck aussehen Dies ist nicht zu schwer zu Code, die Kommentare erklären, wie alles funktioniert: Je größer du den numSteps-Wert machst, desto mehr Pixel werden gezeichnet. Diese Bilder zeigen das Ergebnis für 1000, 10000 und 100000 Schritte: Durch das Spielen ein bisschen mit den Formeln können Sie andere Formen, wie zum Beispiel dieses: Gotten, indem Sie einige der Divisionen durch 2.0 in Divisionen durch 3.0. Mit Rectangle Recursion Noch eine andere Möglichkeit, ein Sierpinski Triangle zu zeichnen, ist mit einer rekursiven Funktion, die Rechtecke verwendet. Der Rekursionsvorgang funktioniert wie folgt: Ändern Sie jedes Rechteck in eine L-Form: Die L-Form selbst besteht aus 3 Rechtecken, die wieder in eine L-Form umgewandelt werden. Wenn Sie dies lange genug machen, sehen Sie mehr aus Und mehr wie ein Sierpinski-Dreieck. Dies ist wieder etwas, das mit einer rekursiven Funktion programmiert werden kann, ziemlich ähnlich dem rekursiven Code, der höher gegeben wird, aber dieses Mal werden Rechtecke gezeichnet und neue Koordinaten für 3 neue Rechtecke müssen jedes Mal berechnet werden. Heres das Ergebnis für 3, 5 und 8 Rekursionen: Um die Rekursion etwas besser zu lernen, versuche zu sehen, was passiert, wenn die drawSierpinski-Funktion sich nur 1 Mal anstelle von 3 anruft (die anderen 2 Anrufe werden kommentiert): jetzt, wenn maxRecursions 8 ist nur 8 Rechtecke gezeichnet, jeder kleiner als der vorherige: Jetzt aktivieren wir zwei der Anrufe an sich selbst, und schon werden noch mehr Plätze gezeichnet, aber die Form ist noch nicht so komplex. Jetzt auf der rechten Seite ist 1 großes Quadrat, links davon 2 halbe Quadrate, links von diesen 4 14. Plätzen, links von diesem 8 18. Quadrate, und so weiter, mit der linken Zeile 128 Quadrate, die 128 mal kleiner als das große Platz sind auf der rechten Seite. Und schließlich, wenn wir alle 3 Anrufe an sich selbst freigeben, bekommen wir das Sierpinski-Dreieck, und so viele Plätze werden gezeichnet, dass fast alles weiß ist: Theres sogar noch einen anderen Weg, um ein Sierpinski-Dreieck zu bekommen: mit einem zellularen Automaten, aber das könnte abgedeckt werden In einem späteren Artikel. Sierpinski-Teppich mit Rectangle-Rekursion Ein anderer Fraktal ist der Sierpinski-Teppich. Um einen von Hand zu zeichnen, beginnen Sie mit einem weißen Platz und ziehen Sie dann ein schwarzes Quadrat in der Mitte mit jeder Seite 13. der Größe des ursprünglichen Quadrats: Jetzt, um das schwarze Quadrat, sind 8 weiße Quadrate. In jedem dieser 8, ziehe wieder ein schwarzes Quadrat, das 18. kleiner ist, und in den 8864 neuen weißen Quadraten, mach es noch einmal: Halten Sie das bis in die Unendlichkeit, und Sie erhalten einen Sierpinski-Teppich Um es zu zeichnen, können wir eine rekursive verwenden Funktion, die ähnlich wie die für das Sierpinski-Dreieck mit Rechtecken verwendet wird, aber jetzt muss sich die Funktion 8 mal anstatt nur 3 anrufen und unterschiedliche Koordinaten verwenden. Die Koordinaten x1, y1-x2, y2 werden in 9 Abschnitte geteilt, in der Mitte wird das Rechteck mit rechtwinklig gezeichnet und die anderen 8 werden als Parameter für die drawCarpet-Aufrufe des nächsten Rekursionsschrittes verwendet. Und heres das Ergebnis für 6 Rekursionsschritte: Wenn du einen größeren willst, benutze eine Auflösung von 729729 Pixeln und 7 Rekursionen. Mit Ternary Numbers Theres auch eine Methode, um den Sierpinski Teppich zu zeichnen, der der AND-Methode zum Zeichnen des Sierpinski-Dreiecks ähnlich ist. Das heißt, du machst eine Berechnung für jedes Pixel, um zu prüfen, ob es gefärbt werden soll oder nicht. Diese Methode ist zwar etwas komplexer, denn man muss in Basis 3 arbeiten, d. H. Mit ternären Zahlen. Ternäre Zahlen haben Ziffern, die 0, 1 oder 2 sein können. Die Methode funktioniert wie folgt: Nehmen Sie die Koordinaten des Pixels als Integer in ternäre Notation geschrieben. Für jede Ziffer, überprüfen Sie, ob NICHT beide entsprechenden Ziffern 1. Wenn dies nie passiert, dann gehört der Punkt zum Teppich. Um die erste (rechtsextrete) ternäre Ziffer einer Zahl zu finden, teilt modulo es aber 3 (Modulo-Division durch 3 arbeitet wie folgt: 030, 131, 232, 330, 431, 532, 630, 731 usw.). Um die zweite ternäre Ziffer zu finden, teile zuerst die Zahl durch 3 (ganzzahlige Teilung, dh die Nummern hinter dem Punkt zu entfernen), und dann modulo teilen sie aber 3. Um die dritte ternäre Ziffer zu finden, teile sie durch 9, dann modulo teilen durch 3. Um das vierte zu finden, teilen Sie sich durch 27, dann modulo teilen sich durch 3, etc. Das Beispiel unten verwendet eine Auflösung von 243 mal 243 Pixel, so müssen wir nur die ersten 5 ternären Ziffern der Pixel-Koordinaten zu überprüfen, da mit 5 Ternäre Ziffern können Sie alle Zahlen von 0 bis 242 darstellen. Die Bedingung in der if, ist auf vielen Zeilen geschrieben, und die Bedingung prüft für jede der 5 Ziffern, wenn NICHT sowohl die von der x-Koordinate als auch die von der y Koordinate sind zusammen 1. Wenn die Bedingung wahr ist, wird ein weißes Pixel bei x, y gezeichnet. Das Ergebnis sieht genauso aus wie beim vorherigen Programm, auch wenn es sich um eine völlig andere Methode handelt: Wenn du die Auflösung vergrößern willst, musst du eine zusätzliche Bedingung für die 6. Stelle hinzufügen (wo du dich durch 243 teile) usw Für jedes Mal, wenn Sie die Auflösung verdreifachen. Die Bedingung, die für die 5. Ziffer (die 5. ternäre Ziffer von rechts) überprüft, ist diejenige, die für das große schwarze Quadrat in der Mitte verantwortlich ist. Die Bedingung, die für die 4. Ziffer prüft, ist diejenige, die für die 8 kleineren Quadrate um das Mittelplatz usw. verantwortlich ist. Wenn Sie die Bedingung für die 5. Stelle entfernen, ist das mittlere schwarze Quadrat weg, und statt dessen erhalten Sie das: Wenn Sie Entfernen Sie stattdessen zum Beispiel die Bedingung, die nach der 3. Ziffer prüft, alle schwarzen Quadrate der dritten Ordnung sind weg, während alle anderen übrig sind: Also, wenn Sie die Auflösung verdreifachen, wird das Quadrat, das jetzt das Mittelplatz ist, ein Quadrat in der Oben links, und du brauchst ein noch größeres schwarzes Quadrat in der neuen Mitte, weswegen du einen neuen Zustand brauchst, der dann die 6. Stelle überprüft. Zuletzt bearbeitet: 2004 Copyright (c) 2004-2007 by Lode Vandevenne. Alle Rechte vorbehalten. Benoit B. Mandelbrot Waclaw Sierpinski Mandelbrot und Sierpinski sind zwei Mathematiker, die wichtige Beiträge auf dem Gebiet der Fraktale gemacht haben. Waclaw Sierpinski lebte von 1882 bis 1969. Er war einer der berühmtesten polnischen Mathematiker. Lasst uns auf eine Entdeckung schauen, die nach ihm das Sierpinski-Dreieck benannt wurde. Er fand es, während er sich auf Topologie entwickelte. Das Sierpinski-Dreieck hat alle Eigenschaften eines Fraktals: Bitte aktivieren Sie Java-Skript und erhalten Sie Flash, um diese Animation zu sehen. Ein Fraktal ist eine geometrische Form, die selbstsüchtig ist und die eine fraktale Dimension hat. Selbstverständlich bedeutet das, wenn man einen kleineren Teil des Fraktals betrachtet, sieht es immer noch gleich aus. Zum Beispiel kannst du das Sierpinski-Dreieck so weit vergrößern, wie es dir gefällt und es wird immer noch das gleiche sehen. Eine fraktale Dimension bedeutet, dass es nicht nur ein, zwei oder mehr dimensionale, sondern etwas dazwischen ist. Ein perfektes Beispiel dafür ist die Grenze des Sierpinski-Dreiecks. Werfen Sie einen Blick auf die Animation, die zeigt, wie es erstellt wird. Um ein Sierpinski-Dreieck zu zeichnen, beginnen Sie mit einem gleichseitigen Dreieck. Dann wird ein Dreieck ausgeschnitten, dessen Ecken am Mittelpunkt der ursprünglichen Dreieckskanten sind. Was Sie noch haben, sind drei kleinere Dreiecke. Jetzt mach das selbe wieder mit den kleineren Dreiecken. Das Ausschneiden heißt eine Iteration. Eine Iteration ist ein Schritt, der einen kleinen Teil der Arbeit macht und immer wieder geht, um das endgültige Ergebnis zu erzielen. Die Form, die Sie am Ende des Sierpinski-Dreiecks haben, hat eine Grenze, die eine Länge der Unendlichkeit hat: Jedes Mal, wenn Sie den oben genannten Prozess wiederholen, erhöhen Sie die Länge der Grenze um die eine Hälfte mehr als es gerade bei der letzten Iteration (versuchen Sie es Auf Papier). Nun, wenn du ein normales Dreieck hast, kannst du jeden Punkt, der am Rand des Dreiecks liegt, mit einer Nummer beschreiben: Zum Beispiel die Distanz, die du entlang der Grenze fahren musst, beginnend an einer der Ecken, die im Uhrzeigersinn gehen. Aber wie kannst du das mit dem Sierpinski-Dreieck machen? Es gibt einige Möglichkeiten, an der Grenze des Sierpinski-Dreiecks in einem Zug zu gehen, was man unten sehen kann, auf dem ein Sierpinski-Dreieck läuft, das in 5 Iterationen gezeichnet wurde: Bitte aktivieren Sie das Java-Skript Und bekomme Flash, um diese Animation zu sehen Aber natürlich ist ein Sierpinski-Dreieck, das zu fünf Iterationen gezogen wird, kein wirkliches Fraktal, denn wenn du anfängst zu vergrößern, hörst du doch bald nicht mehr Selbstsinn, sondern nur große Bereiche von Schwarz und Weiß. Um ein echtes Fraktal zu bekommen, sind unendlich viele Iterationen nötig. Wie kann man also einen Punkt beschreiben, der am Rande des Sierpinski-Dreiecks liegt. Du kannst es versuchen, es wie im regulären Dreieck zu tun: Benutze eine Nummer, die besagt, wie weit du auf dem Weg gehen musst - wie du es oben gesehen hast komm zum Punkt. Aber es gibt ein Problem: Die Distanz zu einem bestimmten Punkt hängt davon ab, wie viele Iterationen beim Zeichnen des Dreiecks verwendet wurden. Die Distanz kann leicht verdoppeln, wenn man ein paar mehr Iterationen macht. Und für ein Sierpinski-Dreieck mit unendlichen Iterationen ist die Distanz, die du gehen musst, für jeden gegebenen Punkt unendlich. So können Sie zwei Zahlen ausprobieren, um den Ort eines Punktes anzuzeigen, z. B. mit einem Koordinatensystem. So ist die Grenze des Sierpinski-Dreiecks zwei oder eindimensional Nun, um einen Punkt darauf zu beschreiben, brauchst du mindestens zwei Zahlen, also in gewisser Weise ist seine zweidimensionale, aber immer noch eine Grenze nur eine Linie ohne jegliche Dicke, also in Dass es eine Dimension von 1 hat. Daraus ist klar, dass die Grenze des Sierpinski-Dreiecks keine Dimension von ein oder zwei, sondern eine nicht-interger-Dimension irgendwo zwischen eins und zwei hat. Sie können viele Fraktalstrukturen in der Natur finden. Ein schönes Beispiel ist der Blumenkohl. Ein Stück davon sieht genauso aus wie das Ganze. Sie können Fraktale in Küsten, Bergen, Wolken, Bäumen und sogar in Farnen benennen Benoit B. Mandelbrot wurde 1924 in Polen geboren, zog aber nach Frankreich, als er zwölf war. Er recherchierte über Fraktalstrukturen und war diejenige, die ihre Eigenschaften definierte und das Mandelbrot Set vorstellte. Auch bekannt als die Mandelbrot Bug, die eine der beliebtesten Fraktale ist. Sie können Fraktale aus irgendeiner Form machen. Ein Fraktal wird durch Kopieren und Ändern des Eingangsbildes erzeugt. Ein sehr einfaches Beispiel ist ein pythagoreischer Baum. Als Eingabebild nehmen wir ein Quadrat und befestigen ein rechtes Dreieck, das seinen Hypotenus mit einer Seite des Platzes teilt. Dann fügen wir jedem der anderen Seiten des Dreiecks ein Quadrat hinzu. Jetzt machen wir das gleiche für die kleineren Plätze, wie wir es für die erste gemacht haben. Auf diese Weise können wir für immer und ewig weitergehen. Wir können dies in Unendlichkeit wiederholen. Als Ergebnis erhalten wir den Leafed Pythagorean Tree. Lets ändere es jetzt ein bisschen: auf jedem neuen Platz werden wir das rechte Dreieck umdrehen. Als Ergebnis erhalten wir den Nadel-Pythagoräischen Baum. Wussten Sie, dass für jede Iteration die Summe der Fläche der hinzugefügten Quadrate gleich der Fläche des ursprünglichen Quadrats ist. Sie können dies mit dem pythagoreischen Theorem leicht beweisen. Der pythagoreische Theorem beweist, dass das Quadrat A plus das Quadrat B dem Platz C entspricht. So wissen wir, dass die Quadrate A und B die gleiche Fläche wie das Quadrat C auf der rechten Seite haben. Nun, da asup2bsup2csup2, wissen wir, dass im Bild rechts die beiden grünen Quadrate A und B zusammen die gleiche Fläche wie ihr entsprechendes Quadrat C haben müssen. Da die roten Quadrate A und B (die grünen C-Quadrate) gleich sind Großes Quadrat C, können wir schließen, dass alle grünen Quadrate zusammen die gleiche Fläche wie der große Platz C haben. Daraus können wir schließen, dass dies für jeden weiteren Schritt gilt, dass jede Reihe von Quadraten der gleichen Farbe zusammengefügt wird Entspricht dem großen Platz C.

No comments:

Post a Comment