Section courante

A propos

Section administrative du site

Le programme suivant, écrit en Java, permet le traçage à répétition d'un triangle de «Sierpinski» utilisé dans les fractales. Je me suis permit de mettre à jour un programme inspiré d'une procédure de «Reiner Scholles» écrite à l'origine en Pascal en le modifiant pour qu'il puisse fonctionner rapidement en utilisant des décalages de bit plutôt que de très lente division par 2. Mais disons que même s'il n'est pas à 100% de mon cru, il est dans l'état actuel assez efficace et performant.

  1. import java.awt.*;
  2. import java.util.Random;
  3. import java.awt.event.*;
  4.  
  5. public class FractaleTriangleSierpinski extends Frame implements WindowListener  {
  6.     
  7.     public void windowClosing(WindowEvent e) {
  8.         System.exit(0);
  9.     }
  10.     
  11.     public void windowActivated(WindowEvent e){}
  12.     public void windowClosed(WindowEvent e){}
  13.     public void windowDeactivated(WindowEvent e){}
  14.     public void windowDeiconified(WindowEvent e){}
  15.     public void windowIconified(WindowEvent e){}
  16.     public void windowOpened(WindowEvent e) {} 
  17.     
  18.     public FractaleTriangleSierpinski() {
  19.         addWindowListener(this);
  20.     }
  21.     
  22.     public void paint(Graphics g) {
  23.         final int Hauteur=25;
  24.         final int ValeurFinale=30000;
  25.         int X[]=new int[3],Y[]=new int[3];
  26.         int XP,YP,I,P;
  27.         X[0]=getSize().width >> 1;
  28.         Y[0]=Hauteur;
  29.         X[1]=X[0]-(getSize().width-1) / 3;
  30.         Y[1]=(getSize().height-1)-Hauteur-1;
  31.         X[2]=X[0]+(getSize().width-1) / 3;
  32.         Y[2]=(getSize().height-1)-Hauteur-1;
  33.         XP=X[0];YP=Y[0];
  34.         g.setColor(Color.black);
  35.         Random random = new Random();
  36.         for(I=1;I<=ValeurFinale;I++) {
  37.             P=random.nextInt(3);
  38.             XP=(XP+X[P]) >> 1;
  39.             YP=(YP+Y[P]) >> 1;
  40.             g.drawRect(XP,YP,1,1);
  41.         } 
  42.     }
  43.     
  44.     public static void main(String[] args) { 
  45.         FractaleTriangleSierpinski f = new FractaleTriangleSierpinski();
  46.         f.setTitle("Triangle Sierpinski");
  47.         f.setSize(300, 150);
  48.         f.setVisible(true);
  49.     }
  50.     
  51. }

Voici en terminant un exemple du résultat de se petit programme :




Dernière mise à jour : Mercredi, le 3 juin 2015