Section courante

A propos

Section administrative du site

Le programme suivant, écrit en Pascal et Assembleur, 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» en le modifiant pour qu'il puisse fonctionner sur un mode graphique 320x200 en 256 couleurs d'une carte VGA et qu'il soit plus rapide 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.

{ Programme de Fractale: Produit le triangle de «Sierpinski» en utilisant
la technique du jeu de chaos.

Inspiré de:
Reiner Scholles, Le grand livre du Turbo & Borland Pascal 7.0,
Edition Micro Application, 1993, page 633-634. ISBN: 2-86899-873-9.
}

Program FractaleTriangleSierpinski;

Const
 GetMaxScreenX=320;
 GetMaxScreenY=200;

Procedure SetPixel(X:Word;Y,Color:Byte);
Var
 Screen:Array[0..199,0..319]of Byte Absolute $A000:$0000;
Begin
 Screen[Y,X]:=Color;
End;

Procedure BuildTriangleSierpinkski;
Const
 Hauteur=25;
 ValeurFinale=30000;
Var
 X,Y:Array[0..2]of Word;
 XP,YP,I,P:Word;
Begin
 Randomize;
 X[0]:=GetMaxScreenX shr 1;
 Y[0]:=Hauteur;
 X[1]:=X[0]-(GetMaxScreenX div 3);
 Y[1]:=GetMaxScreenY-Hauteur-1;
 X[2]:=X[0]+(GetMaxScreenX div 3);
 Y[2]:=GetMaxScreenY-Hauteur-1;
 XP:=X[0];YP:=Y[0];
 For I:=1to(ValeurFinale)do Begin
  P:=Random(3);
  XP:=(XP+X[P])shr 1;
  YP:=(YP+Y[P])shr 1;
  SetPixel(XP,YP,15);
 End;
End;

BEGIN
 ASM
  MOV AX,0013h
  INT 10h
 END;
 BuildTriangleSierpinkski;
 ASM
  XOR AX,AX
  INT 16h
 END;
END.

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



Dernière mise à jour : Dimanche, le 1 mai 2016