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
|
FUNCTION F3(t: Reel): Byte;
VAR Ct, s, St, St2, St4, u, v, w: Reel;
BEGIN
SinCos(t, St, Ct);
IF (Ct>-0.5) THEN BEGIN
St2:= Sqr(St); St4:= Sqr(St2);
u:= 128 * Ct; v:= 64 * St2; w:= 16 * St4;
s:= u + v; IncR(s, w + 7); w:= s / 135
END
ELSE w:= 0;
Result:= Round(255 * w)
END;
FUNCTION F2(t: Reel): Byte;
VAR Ct, s, St, St2, u, v, w: Reel;
BEGIN
SinCos(t, St, Ct);
IF (Ct>-0.5) THEN BEGIN
St2:= Sqr(St); u:= 8 * Ct; v:= 4 * St2;
s:= u + v; w:= (s + 1) / 9
END
ELSE w:= 0;
Result:= Round(255 * w)
END;
FUNCTION F1(t: Reel): Byte;
VAR Ct, St, u, w: Reel;
BEGIN
SinCos(t, St, Ct);
IF (Ct>-0.5) THEN BEGIN
u:= 2 * Ct; w:= (u + 1) / 3
END
ELSE w:= 0;
Result:= Round(255 * w)
END;
PROCEDURE CalcMatrIm(La, Ha: Z_32; VAR Ma: Tab_Pix);
CONST D_Pi = 2 * Pi; Pi2s3 = D_Pi / 3;
VAR k: Byte; La1, Ha1, Xm, Ym: Z_32; Alpha, Phi, r: Reel; Px: Pixel;
BEGIN
La1:= La - 1; Ha1:= Ha - 1;
FOR Xm:= 0 TO La1 DO
BEGIN
r:= Xm / La1; Phi:= D_Pi * r;
FOR k:= 1 TO 3 DO BEGIN
Alpha:= (k - 1) * Pi2s3;
Px[k]:= F3(Phi - Alpha)
END;
FOR Ym:= 0 TO Ha1 DO Ma[Xm, Ym]:= Px
END
END; |
Partager