Abbiamo visto un primo programma chiamato “DrawWorld” abbiamo introdotto la grafica orientata programmazione Java. Cambiamo questo programma di base per generare un frattale di base ricorsiva: Gli Sierpinski triangolo.
(Vedere e la generazione di un frattale ricorsiva)
È un frattale che è costruito ricorsivamente da un triangolo i cui lati sono divise da suo punto medio. Con questi nuovi punti, e precedenti, nuovi triangoli sono costruiti simile alla precedente.
Se si parte da un triangolo ABC e ottenere i punti medi dei suoi lati (MNP), il prossimo livello di ricorsione costruirà i tre triangoli inferiori: APN, PBM l'NMC.
Il triangolo di Sierpinski ha un dimensione frattale di Hausdorff-Besicovitch coincidente con la dimensione frattale homotecia pari a: 1,58496… (Gli)
Se ognuno di questi nuovi triangoli sono suddivise in tre, ci sarà sempre una nuova figura in modo ricorsivo. Avremo un nuovo livello di ricorsione possiamo controllare utilizzando una variabile (nivel_de_recursividad) del nostro programma.
Abbiamo definito una funzione “paintRecursivo” (Ho chiamato dal metodo “dipingere”) a che punto siamo di base del triangolo, e la ricorsione. La funzione calcola i vertici del triangolo, dipinge la figura e si chiama tre volte, uno per ciascuno dei subtriangles.
In ogni chiamata alla funzione riduce il valore della ricorsione, in modo che quando si tratta di finiture a zero portando ricorsione.
importare java.applet.Applet; importare java.awt.Graphics; /** * @ Autore José Juan Aliaga */ pubblico classe MainApp estende Applet { raddoppiare XP1 = 300; raddoppiare YP1 = 300; raddoppiare XP2 = 10; raddoppiare yp2 = 300; raddoppiare sin60 = Math.sin(3.14/3.); int nivel_de_recursividad = 6; pubblico MainApp() { } pubblico statica invalidare principale(Stringa[] args) { } public void dipingere(Graphics g){ paintRecursivo(g,nivel_de_recursividad,XP1, YP1, XP2, yp2); } private void paintRecursivo(Graphics g, int i, raddoppiare XP12, raddoppiare yp12, raddoppiare Xp22, raddoppiare yp22 ) { raddoppiare dx =(Xp22-XP12)/2.; raddoppiare due =(yp22-yp12)/2.; raddoppiare XP32 XP12 dx = 2 * valore * sin60; raddoppiare yp32=yp12 dy 2*dx*sin60; raddoppiare dx1 =(Xp22 XP12)/2.; raddoppiare DY1 =(yp22 yp12)/2.; raddoppiare dx2 =(XP32 Xp22)/2.; raddoppiare dy2 =(yp32 yp22)/2.; raddoppiare DX3 =(XP12 XP32)/2.; raddoppiare DY3 =(yp12 yp32)/2.; se(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); } altro{ paintRecursivo(g,i-1, XP12, yp12, dx1, dy1); paintRecursivo(g,i-1, dx1, dy1, Xp22, yp22); paintRecursivo(g,i-1, DX3, DY3, DX2, dy2); } } }
Deve essere collegato per pubblicare un commento.