PIZiadas graphiques

PIZiadas graphiques

Mon monde est po.

Fractales récursives: Triangle de Sierpinski [JAVA]

triangulo_sierpinskiNous 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);
  }

 }
}
JAVA

Cours JAVA