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. Voici le code source Oberon .NET :

MODULE rgbbox; 

IMPORT System,System.Drawing,System.Windows.Forms;

CONST
 CenterHorizontal = 320 DIV 2;
 CenterVertical = 320 DIV 2;

TYPE
 RGBBOXApp = OBJECT IMPLEMENTS System.Windows.Forms.Form;

  PROCEDURE SetPixel3D(e:System.Windows.Forms.PaintEventArgs;X,Y,Z,R,G,B:INTEGER);
  VAR 
   p: System.Drawing.Pen;
  BEGIN
   NEW(p,System.Drawing.Color.FromArgb(R, G, B));
   e.get_Graphics().DrawRectangle(p, CenterHorizontal + X - (Z DIV 2), CenterVertical - Y + (Z DIV 2), 1, 1);
  END SetPixel3D;

  PROCEDURE Painting(sender: OBJECT; pe: System.Windows.Forms.PaintEventArgs);
  VAR 
   I,J,K:INTEGER;
  BEGIN
   FOR I := 0 TO 149 DO
    SetPixel3D(pe, 0, 0, I, 0,0,0);
    SetPixel3D(pe, 0, I, 0, 0,0,0);
    SetPixel3D(pe, I, 0, 0, 0,0,0);
   END;
   FOR J := 99 TO 0 BY -1 DO
    FOR I := 0 TO 99 DO
     SetPixel3D(pe, I, J, 99, I, J, 99);
    END;
   END;
   FOR K := 0 TO 99 DO
    FOR I := 0 TO 99 DO
     SetPixel3D(pe, I, 99, K, I, 99, K);
    END;
   END;
   FOR J := 99 TO 0 BY -1 DO
    FOR K := 0 TO 99 DO
     SetPixel3D(pe, 99, J, K, 99, J, K);
    END;
   END;
  END Painting;

  PROCEDURE NEW();
  VAR
   PaintHandler:System.Windows.Forms.PaintEventHandler;
  BEGIN
   NEW(PaintHandler, Painting);
   System.Windows.Forms.Form.add_Paint(PaintHandler);
   System.Windows.Forms.Form.set_Text("Cube RVB");
   System.Windows.Forms.Form.set_Width(320);
   System.Windows.Forms.Form.set_Height(320);
   System.Windows.Forms.Form.set_BackColor(System.Drawing.Color.FromArgb(255, 255, 255));
  END NEW;

 END RGBBOXApp;

VAR
 rgbboxapp:RGBBOXApp;

BEGIN 
 NEW(rgbboxapp);
 System.Windows.Forms.Application.Run(System.Windows.Forms.Form(rgbboxapp));
END rgbbox.

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




Dernière mise à jour : Samedi, le 2 février 2008