Wir haben ein erstes Programm namens gesehen “DrawWorld” führten wir die JAVA-Programmierung orientiert Grafiken. Lassen Sie uns diese grundlegende Programm zu ändern, um eine grundlegende rekursive Fraktale generieren: Die Sierpinski Dreieck.
(Siehe und Erzeugen eines rekursiven fraktale)
Es ist ein Fraktal, das wird rekursiv aus einem Dreieck, dessen Seiten von seinem Mittelpunkt geteilt gebaut. Mit diesen neuen Punkten, und früheren, neue Dreiecke sind ähnlich aufgebaut wie die vorherige.
Wenn wir von einem Dreieck ABC und nutzen Sie die Mittelpunkte der Seiten (MNP), die nächste Stufe der Rekursion bauen die drei Dreiecke unter: APN, PBM den NMC.
Das Sierpinski Dreieck hat eine fraktale Dimension Hausdorff-Besicovitch übereinstimmend mit fraktalen Dimension homotecia gleich: 1,58496… (W)
Wenn jeder dieser neuen Dreiecke sind in drei unterteilt, wir werden immer eine neue Figur rekursiv. Wir haben eine neue Stufe der Rekursion steuern wir mit einer Variablen können (nivel_de_recursividad) unseres Programms.
Wir haben eine Funktion definiert “paintRecursivo” (Ich rief aus dem Verfahren “malen”) An diesem Punkt haben wir Dreiecksbasis, und die Rekursion. Die Funktion berechnet die Eckpunkte des Dreiecks, malt die Figur und nennt sich dreimal, eine für jede der Teildreiecke.
In jedem Aufruf der Funktion reduziert den Wert der Rekursion, so dass, wenn es Null ist beendet Durchführung Rekursion.
importieren java.applet.Applet; importieren java.awt.Graphics; /** * @ Autor José Juan Aliaga */ Öffentlichkeit Klasse MainApp erstreckt Applet { verdoppeln xp1 = 300; verdoppeln YP1 = 300; verdoppeln xp2 = 10; verdoppeln YP2 = 300; verdoppeln sin60 = Math.sin(3.14/3.); int nivel_de_recursividad = 6; Öffentlichkeit MainApp() { } Öffentlichkeit statische ungültig Haupt(String[] args) { } public void malen(Graphics g){ paintRecursivo(g,nivel_de_recursividad,xp1, YP1, xp2, YP2); } private void paintRecursivo(Graphics g, int i, verdoppeln XP12, verdoppeln yp12, verdoppeln Xp22, verdoppeln yp22 ) { verdoppeln dx =(Xp22-XP12)/2.; verdoppeln zwei =(yp22-yp12)/2.; verdoppeln XP32 XP12 dx = 2 * Wert * sin60; verdoppeln yp32=yp12 dy 2*dx*sin60; verdoppeln dx1 =(Xp22 XP12)/2.; verdoppeln dy1 =(yp22 yp12)/2.; verdoppeln dx2 =(XP32 Xp22)/2.; verdoppeln dy2 =(yp32 yp22)/2.; verdoppeln dx3 =(XP12 XP32 )/2.; verdoppeln Dy3 =(yp12 yp32)/2.; wenn(i<= 0){ g.drawLine((int)XP12,(int)yp12,(int)Xp22,(int)yp22); g.drawLine((int)Xp22,(int)yp22,(int)XP32,(int)yp32); g.drawLine((int)XP32,(int)yp32,(int)XP12,(int)yp12); } sonst{ paintRecursivo(g,i-1, XP12, yp12, dx1, dy1); paintRecursivo(g,i-1, DX1, DY1, Xp22, yp22); paintRecursivo(g,i-1, dx3, dy3, dx2, dy2); } } }
Muss sein in Verbindung gebracht einen Kommentar posten.