Nous avons vu un premier programme appelé “DrawWorld” nous avons introduit les graphiques de programmation Java orientés. Nous allons changer ce programme de base pour générer une récurrence fractale de base: Le Triangle de Sierpinski.
(Voir et génération d'une fractale récursive)
Il s'agit d'une fractale qui est construit de manière récursive à partir d'un triangle dont les côtés sont divisés par son milieu. Avec ces nouveaux points, et précédent, nouveaux triangles sont construits similaire à la précédente.
Si nous partons d'un triangle ABC et obtenir les milieux de ses côtés (MNP), le prochain niveau de récursivité va construire trois triangles ci-dessous: APN, PBM le NMC.
Le triangle de Sierpinski a une dimension fractale de Hausdorff-Besicovitch coïncide avec la dimension fractale homotecia égal à: 1,58496… (W)
Si chacun de ces nouveaux triangles sont subdivisées en trois, nous obtiendrons une nouvelle figure de manière récursive. Nous aurons un nouveau niveau de récursion nous pouvons contrôler en utilisant une variable (nivel_de_recursividad) de notre programme.
Nous avons défini une fonction “paintRecursivo” (J'ai appelé à partir de la méthode “peindre”) à quel point nous de base du triangle, et la récursion. La fonction calcule les sommets du triangle, dresse la figure et lui-même appelle trois fois, une pour chacun des subtriangles.
Dans chaque appel de la fonction de réduire la valeur de récursion, de sorte que quand il est zéro termine d'récursion.
importer java.applet.Applet; importer java.awt.Graphics; /** * @ Auteur José Juan Aliaga */ publique classe MainApp s'étend Applet { doubler XP1 = 300; doubler YP1 = 300; doubler XP2 = 10; doubler YP2 = 300; doubler sin60 = Math.sin(3.14/3.); int nivel_de_recursividad = 6; publique MainApp() { } publique statique annulera principale(Chaîne[] args) { } public void peindre(Graphics g){ paintRecursivo(g,nivel_de_recursividad,XP1, YP1, XP2, YP2); } private void paintRecursivo(Graphics g, int i, doubler XP12, doubler yp12, doubler Xp22, doubler yp22 ) { doubler dx =(Xp22-XP12)/2.; doubler deux =(yp22-yp12)/2.; doubler XP32 XP12 dx = 2 * valeur * sin60; doubler yp32=yp12 dy 2*dx*sin60; doubler DX1 =(Xp22 XP12)/2.; doubler dy1 =(yp22 yp12)/2.; doubler dx2 =(XP32 Xp22)/2.; doubler dy2 =(yp32 yp22)/2.; doubler DX3 =(XP12 XP32 )/2.; doubler Dy3 =(yp12 yp32)/2.; si(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); } autre{ paintRecursivo(g,i-1, XP12, yp12, DX1, dy1); paintRecursivo(g,i-1, DX1, dy1, Xp22, yp22); paintRecursivo(g,i-1, DX3, dy3, dx2, dy2); } } }
Doit être lié poster un commentaire.