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
|
PROCEDURE CalcF(Va, Vb: Reel; Vxy: Ve2D; VAR DaF_, DbF_, Dy_: Reel);
VAR ExpE, p, q, r: Reel;
BEGIN
IF (Vb=0) THEN Alarme(q);
q:= Vxy.u / Vb; IF (q<100) THEN ExpE:= Exp(-q)
ELSE ExpE:= 0;
r:= 1 - ExpE; DaF_:= r;
p:= Va * r; Dy_:= Vxy.v - p;
p:= Va * Vxy.u; q:= Sqr(Vb);
r:= p / q; DbF_:= -r * ExpE
END;
PROCEDURE CalcS_GradS(Wa, Wb: Reel; VAR L_: Tab7V;
VAR Sc_, DaS_, DbS_: Reel);
VAR k: Byte; DaF, DaS, DbF, DbS, DeltaY, Dy2, p, q, Sy2: Reel;
BEGIN
CalcF(Wa, Wb, L_[2], DaF, DbF, DeltaY);
DaS:= DeltaY * DaF; DbS:= DeltaY * DbF; Sy2:= Sqr(DeltaY);
FOR k:= 3 TO 7 DO BEGIN
CalcF(Wa, Wb, L_[k], DaF, DbF, DeltaY);
p:= Sqr(DeltaY); q:= Sy2 + p; Sy2:= q;
p:= DeltaY * DaF; q:= DaS + p; DaS:= q;
p:= DeltaY * DbF; q:= DbS + p; DbS:= q
END;
Sc_:= Sy2; DaS_:= -2 * DaS; DbS_:= -2 * DbS
END;
PROCEDURE Evolution(Ia: Byte; Aini, Bini: Reel; Adeg: Z_16);
CONST C1 = 59; C2 = C1 + 11; L1 = 40; o = 502;
Epsilon = 1E-36; Kf = 0.090; m = ' ';
VAR y: Byte; k: Word; DaS, DbS, Sc, Lim, N2, p, q, Va, Va1, Vb, Vb1, Vs: Reel;
BEGIN
AffKf(C1 - 6, L1 - 2, Kf, Adeg); Va:= Aini; Vb:= Bini;
p:= Sqr(Va); q:= Sqr(Vb); Lim:= Epsilon * (p + q);
CalcS_GradS(Va, Vb, Liste, Sc, DaS, DbS); k:= 0;
Trace_Point(Amin, Bmin, Va, Vb, Lx, Ly, Matr_Image);
REPEAT
p:= Kf * DaS; Va1:= Va - p;
q:= Kf * DbS; Vb1:= Vb - q;
p:= Sqr(DaS); q:= Sqr(DbS); N2:= p + q;
Inc(k); We(C1, L1, k, 5); Wr(C2, L1, N2, 10);
Trace_Point(Amin, Bmin, Va1, Vb1, Lx, Ly, Matr_Image);
CalcS_GradS(Va1, Vb1, Liste, Sc, DaS, DbS);
Va:= Va1; Vb:= Vb1
UNTIL ((N2<Lim) OR (k>65000));
y:= 2 * Ia; Inc(y, 46); E(0010);
We(2, y, Ia, 3); Write(m, k:6, m, N2:6, m);
Write(Va:20:14, m, Vb:20:15); A_
END;
PROCEDURE Trace_Courbe(La, Ha: Z_32; Va1, Va2, Vb1, Vb2: Reel;
VAR Lx_, Ly_: Reel);
CONST Nmax = 12; D_Pi = 2 * Pi; DPiN = D_Pi / Nmax; Ad = 360 / Nmax;
VAR k: Byte; Aini, Am, Bini, Bm, Ct, Da, Db, DeltaV, p, St, t: Reel;
BEGIN
DeltaV:= Va2 - Va1; Lx_:= (La - 1) / DeltaV; Da:= 0.45 * DeltaV;
DeltaV:= Vb2 - Vb1; Ly_:= (Ha - 1) / DeltaV; Db:= 0.45 * DeltaV;
Am:= 0.5 * (Va1 + Va2); Bm:= 0.5 * (Vb1 + Vb2);
AffTC;
FOR k:= 0 TO (Nmax - 1) DO
BEGIN
t:= DpiN * k;
Ct:= Cos(t); p:= Da * Ct; Aini:= Am + p;
St:= Sin(t); p:= Db * St; Bini:= Bm + p;
Evolution(k, Aini, Bini, Round(Ad * k))
END
END; |