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