Le programme suivant, écrit en Perl, 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. Avant de commencer assurez-vous d'avoir installé le paquet Tk approprié comme l'exemple suivant :
C:\>ppm install Tk |
Voici le code source Perl :
- #!/usr/bin/perl
-
- use Tk;
- use strict;
-
- my $Hauteur=25;
- my $ValeurFinale=100000;
- my (@X,@Y);
-
- my $mw = MainWindow->new;
- $mw->title("Triangle Sierpinski");
- my $canvas = $mw->Canvas( -width=>320, -height=>200, -background=>"black");
- $canvas->pack(-expand => 1, -fill => 'both');
-
- sub SetPixel($$$) {
- my($x,$y,$color) = @_;
- $canvas->createLine($x, $y, $x + 1, $y + 1, -width => 1, -fill => $color);
- }
-
- $X[0] = int(320 / 2);
- $Y[0] = $Hauteur;
- $X[1] = $X[0] - (int(320) - 1) / 3;
- $Y[1] = (int(200) - 1) - $Hauteur - 1;
- $X[2] = $X[0] + (320 - 1) / 3;
- $Y[2] = (200 - 1) - $Hauteur - 1;
- my $XP = $X[0];
- my $YP = $Y[0];
- my $I = 1;
-
- sub anim() {
- if($I <= $ValeurFinale) {
- my $P = rand(2 + 1);
- $XP = int(($XP + $X[$P]) / 2);
- $YP = int(($YP + $Y[$P]) / 2);
- SetPixel($XP, $YP, "yellow");
- $I++;
- }
- }
-
- my $id = $mw->repeat(5, \&anim);
-
- MainLoop;
Voici en terminant un exemple du résultat de se petit programme:
Dernière mise à jour : Jeudi, le 17 janvier 2019