1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
| (*HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
Graphe des fonctions couleur
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH*)
PROCEDURE Axes(La, Ha: Z_32; VAR X_1, X_2, Y_1, Y_2, Dx, Dy: Z_32;
VAR Ma: Tab_Pix);
CONST g = 150; Pggg: Pixel = (g, g, g); Pmmm: Pixel = (m, m, m);
VAR k: Z_32;
BEGIN
X_1:= Round(0.05 * La); X_2:= Round(0.95 * La); Dx:= X_2 - X_1;
Y_1:= Round(0.05 * Ha); Y_2:= Round(0.95 * Ha); Dy:= Y_2 - Y_1;
FOR k:= 0 TO (La - 1) DO
BEGIN
Ma[k, Y_1]:= Pmmm;
IF ((X_1<k) AND (k<X_2)) THEN Ma[k, Y_2]:= Pggg
END;
FOR k:= 0 TO (Ha - 1) DO
BEGIN
Ma[X_1, k]:= Pmmm;
IF ((Y_1<k) AND (k<Y_2)) THEN Ma[X_2, k]:= Pggg
END
END;
PROCEDURE GrapheRJB(La, Ha: Z_32; VAR Ma: Tab_Pix);
CONST P100: Pixel = (m, 0, 0);
P010: Pixel = (0, m, 0);
P001: Pixel = (0, 0, m);
VAR DeltaX, DeltaY, k, Kmax, X1, X2, Xm, Y1, Y2, Ym: Z_32;
Cy, s, t: Reel; Px: Pixel;
BEGIN
Axes(Larg_Image, Haut_Image,
X1, X2, Y1, Y2, DeltaX, DeltaY, Matr_Image);
Kmax:= 3 * La; Cy:= DeltaY / m;
FOR k:= 0 TO Kmax DO
BEGIN
t:= k / Kmax; s:= 6 * t; Px:= PixelRJB(s);
Xm:= Round(t * DeltaX); Inc(Xm, X1);
Ym:= Round(Cy * Px[1]); Inc(Ym, Y1); Ma[Xm, Ym]:= P100;
Ym:= Round(Cy * Px[2]); Inc(Ym, Y1); Ma[Xm, Ym]:= P010;
Ym:= Round(Cy * Px[3]); Inc(Ym, Y1); Ma[Xm, Ym]:= P001
END
END;
(*HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
Cercle chromatique
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH*)
PROCEDURE CalcMat_Im_C(La, Ha: Z_32; VAR Ma: Tab_Pix);
CONST I3sPi = 3 / Pi;
Pzero: Pixel = (0, 0, 0);
VAR Ha1, La1, Xm, Ym: Z_32; Dx, Dy, r, Rmax, s, t, w, Xc, Yc: Reel;
Px: Pixel;
BEGIN
Ha1:= Ha - 1; La1:= La - 1;
Xc:= La1 / 2; Yc:= Ha1 / 2;
IF (Xc>Yc) THEN Rmax:= Xc ELSE Rmax:= Yc;
FOR Xm:= 0 TO La1 DO
BEGIN
Dx:= Xm - Xc;
FOR Ym:= 0 TO Ha1 DO
BEGIN
Dy:= Ym - Yc; r:= Norme1(Dx, Dy);
IF (r<Rmax) THEN
BEGIN
t:= Arg2XY(Dx, Dy); s:= I3sPi * t;
Px:= PixelRJB(s)
END
ELSE Px:= Pzero;
Ma[Xm, Ym]:= Px
END
END
END;
(*HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
Palette rectangulaire
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH*)
PROCEDURE CalcMat_Im(La, Ha: Z_32; VAR Ma: Tab_Pix);
CONST m = 255;
VAR Ha1, La1, Xm, Ym: Z_32; r, s, w: Reel; Px: Pixel;
BEGIN
Ha1:= Ha - 1; La1:= La - 1;
FOR Xm:= 0 TO La1 DO
BEGIN
r:= Xm / La; s:= 6 * r;
Px:= PixelRJB(s);
FOR Ym:= 0 TO Ha1 DO Ma[Xm, Ym]:= Px
END
END;
(*HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
Programme principal
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH*)
PROCEDURE P1;
BEGIN
GraphBmp(000);
// CalcMat_Im(Larg_Image, Haut_Image, Matr_Image);
CalcMat_Im_C(Larg_Image, Haut_Image, Matr_Image);
// GrapheRJB(Larg_Image, Haut_Image, Matr_Image);
Creation_F(Larg_Image, Haut_Image); A_
END; |
Partager