Section courante

A propos

Section administrative du site

J'ai longuement hésité, tant qu'à savoir, si je devais mettre ou non, un exemple d'affichage du Cube RVB en 3 dimensions. Est-ce vraiment utile? Il semblerait que, dans un certain sens, oui, puisque je considère que cela permettra pour plusieurs de développer leur imagination dans un sens pratique du traitement des couleurs. Le concept de l'image suivante est fort simple, il faut créer des coordonnées en 3 dimensions de façon à égaler toujours la même somme total en coordonnée lorsqu'on affiche dans une couleur. 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 :

  1. #!/usr/bin/perl
  2.  
  3. use Tk;
  4. use strict;
  5.  
  6. use constant CenterHorizontal => 320 >> 1;
  7. use constant CenterVertical => 320 >> 1;
  8.  
  9. my $mw = MainWindow->new;
  10. $mw->title("Cube RVB");
  11. my $canvas = $mw->Canvas( -width=>320, -height=>300, -background=>"white");
  12. $canvas->pack(-expand => 1, -fill => 'both');
  13.  
  14. sub SetPixel3D($$$$$$) {
  15.  my($X, $Y, $Z, $R, $G, $B) = @_;
  16.  my $color = sprintf("#%04x%04x%04x", $R * 256, $G * 256, $B * 256);
  17.  $X = CenterHorizontal + $X - ($Z >> 1);
  18.  $Y = CenterVertical - $Y + ($Z >> 1);
  19.  $canvas->createLine($X, $Y, $X + 1, $Y + 1, -width => 1, -fill=>$color);
  20. }
  21.  
  22. for(my $I = 0; $I <= 149; $I++) {
  23.  &SetPixel3D(0, 0, $I, 0, 0, 0);
  24.  &SetPixel3D(0, $I, 0, 0, 0, 0);
  25.  &SetPixel3D($I, 0, 0, 0, 0, 0);
  26. }
  27. for(my $J = 99; $J >= 0; $J--) {
  28.  for(my $I = 0; $I <= 99; $I++) {
  29.    &SetPixel3D($I, $J, 99, $I, $J, 99);
  30.  }
  31. }
  32. for(my $K = 0; $K <= 99; $K++) {
  33.  for(my $I = 0; $I <= 99; $I++) {
  34.   &SetPixel3D($I, 99, $K, $I, 99, $K);
  35.  }
  36. }
  37. for(my $J = 99; $J >= 0; $J--) {
  38.  for(my $K = 0; $K <= 99; $K++) {
  39.   &SetPixel3D(99, $J, $K, 99, $J, $K);
  40.  }
  41. }
  42.  
  43. MainLoop;

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

Dernière mise à jour : Jeudi, le 17 janvier 2019