ΠΠ΅Ρ Π°Π½ΠΈΠΊΠ° ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΎΠ±ΠΎΡΠ°ΠΌΠΈ
ΠΠΈΠ½Π΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΎΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π·Π²Π΅Π½ΡΠ΅Π². Π ΡΠΎΡΠΊΠ΅ Π: L3= 1.08 ΠΌ; =0.529 ΡΠ°Π΄; Ρ=0.279 ΡΠ°Π΄ ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΠΈ, ΡΠΊΠΎΡΠΎΡΡΠ΅ΠΉ ΠΈ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠΉ. BFi=0.52 955 776 771 375 357 952; bPsi=0.27 980 931 571 248 898 048; bL3=1.862 780 491 200 215 680; Π’ΡΠ°Π΅ΠΊΡΠΎΡΠΈΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ Π·Π°Ρ Π²Π°ΡΠ° ΠΈ Π³ΡΠ°ΡΠΈΠΊ ΠΏΡΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π·Π²Π΅Π½Π° (ΠΏΠΎ Π·Π°Π΄Π°Π½ΠΈΡ). Π’ΡΠ°Π΅ΠΊΡΠΎΡΠΈΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ Π·Π°Ρ Π²Π°ΡΠ° Π΄Π΅ΡΠ°Π»ΠΈ… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
ΠΠ΅Ρ Π°Π½ΠΈΠΊΠ° ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΎΠ±ΠΎΡΠ°ΠΌΠΈ (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
ΠΡΡΡΠΎΠ²Π°Ρ ΡΠ°Π±ΠΎΡΠ° ΠΏΠΎ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΡ:.
ΠΠ΅Ρ Π°Π½ΠΈΠΊΠ° ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΎΠ±ΠΎΡΠ°ΠΌΠΈ.
ΠΠ°Π΄Π°Π½ΠΈΠ΅.
ΠΠΈΠ½Π΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΎΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π·Π²Π΅Π½ΡΠ΅Π².
ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ Π·Π°Ρ Π²Π°ΡΠ° ΠΈΠ· ΡΠΎΡΠΊΠΈ (0,2; 0,2; 0,2) Π² ΡΠΎΡΠΊΡ (0,8; 0,5; 0,7), Π΅ΡΠ»ΠΈ Π·Π°ΠΊΠΎΠ½ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ № 4.
ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΈ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ Π·Π²Π΅Π½ΡΠ΅Π².
ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ°ΡΡΠ΅ΡΠΎΠ² ΠΏΠΎΡΡΡΠΎΠΈΡΡ Π³ΡΠ°ΡΠΈΠΊΠΈ:
ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ Π·Π°Ρ Π²Π°ΡΠ° Π² ZOX.
ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΈ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ Π·Π°Ρ Π²Π°ΡΠ°.
ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΈ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ 1-ΠΎΠ³ΠΎ Π·Π²Π΅Π½Π°.
ΠΠ°ΡΠ°Π»ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅.
ΠΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ xyz ΡΠΎΡΠ΅ΠΊ (ΠΌΠ΅ΡΡ). | ΠΠ°ΠΊΠΎΠ½ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ. | ΠΡΠ²Π΅ΡΡΠΈ Π½Π° ΠΏΠ΅ΡΠ°ΡΡ ΠΈ ΠΏΠΎΡΡΡΠΎΠΈΡΡ Π³ΡΠ°ΡΠΈΠΊΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ Π·Π²Π΅Π½Π°. | ΠΠ»ΠΎΡΠΊΠΎΡΡΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ. | Π£Π³ΠΎΠ» Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ Π΄Π΅ΡΠ°Π»ΠΈ. | ||
ΠΠ°ΡΠ°Π»ΠΎ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ A. | ΠΠ°ΡΠ°Π»ΠΎ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ B. | |||||
0,2 0,2 0,2. | 0,8 0,5 0,7. | ZOX. | ||||
Π ΠΈΡ. 1.
ΠΠΈΠ½Π΅ΠΌΠ°ΡΠΈΠΊΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΎΡΠΎΠΌ:
Π²ΡΠ²Π΅ΡΡΠΈ Π·Π°ΠΊΠΎΠ½Ρ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π΄Π»Ρ Π΄Π΅ΡΠ°Π»ΠΈ ΠΈ Π·Π°Ρ Π²Π°ΡΠ°;
ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ°ΡΡΠ΅ΡΠΎΠ².
ΠΏΠΎΡΡΡΠΎΠΈΡΡ Π³ΡΠ°ΡΠΈΠΊΠΈ:
ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ Π·Π°Ρ Π²Π°ΡΠ° Π΄Π΅ΡΠ°Π»ΠΈ Π² ZOX, Π΅ΡΠ»ΠΈ ΡΠ³ΠΎΠ» Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ Π΄Π΅ΡΠ°Π»ΠΈ 60;
ΡΠΊΠΎΡΠΎΡΡΠ΅ΠΉ ΠΈ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠΉ Π²Π΅Π΄ΠΎΠΌΡΡ Π·Π²Π΅Π½ΡΠ΅Π²;
ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ.
ΠΠ° ΠΏΡΠΎΡΡΠΆΠ΅Π½ΠΈΠΈ Π΄ΠΎΠ»Π³ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ΅Π»ΠΎΠ²Π΅ΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΡΠ°Π»ΠΎΡΡ ΡΠΉΡΠΈ ΠΎΡ ΡΡΡΠ½ΠΎΠ³ΠΎ ΡΡΡΠ΄Π°. ΠΠ° ΡΡΠΎ Π±ΡΠ»ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΡΠΈΠ½, Π³Π»Π°Π²Π½ΡΠ΅ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ³ΡΠΎΠΌΠ½ΡΠ΅ ΡΠΈΠ»ΠΎΠ²ΡΠ΅ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π·Π°ΡΡΠ°ΡΡ. ΠΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ, ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ ΡΡΠ»ΠΎΠΆΠ½ΡΠ»ΠΈΡΡ ΠΈ ΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΠΎΠ²Π°Π»ΠΈΡΡ. Π’ΡΡΠ΄Π½ΠΎ ΡΠ΅Π±Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ°Π±ΡΠΈΠΊΡ ΠΈΠ»ΠΈ Π·Π°Π²ΠΎΠ΄, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ Π½Π΅ Π±ΡΠ»ΠΎ Π±Ρ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΎΠ±ΠΎΡΠ°. ΠΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠΎΠ±ΠΎΡ ΡΠ°Π±ΠΎΡΠ°Π» Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΌΠ΅ΡΡ ΠΈΠΌ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΈ Ρ ΠΎΡΠΎΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ, ΠΊΠ°ΠΊ ΠΎΠ½ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΡΠ΅Ρ. ΠΠ°Π½Π½Π°Ρ ΠΊΡΡΡΠΎΠ²Π°Ρ ΡΠ°Π±ΠΎΡΠ° Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π° Π½Π° ΠΊΠΈΠ½Π΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΎΡΠ° ΠΈ ΠΎΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ ΠΊΠΈΠ½Π΅ΠΌΠ°ΡΠΈΠΊΠΈ Π΅Π³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ.
ΠΠΈΠ½Π΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΎΡΠ°. ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ Π·Π²Π΅Π½ΡΠ΅Π².
Π ΠΈΡ. 2.
L1=0.2; L2=0.2.
Π ΡΠΎΡΠΊΠ΅ Π: L3=0.2; =0; Ρ=0.
Π ΡΠΎΡΠΊΠ΅ Π: L3= 1.08 ΠΌ; =0.529 ΡΠ°Π΄; Ρ=0.279 ΡΠ°Π΄ ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΠΈ, ΡΠΊΠΎΡΠΎΡΡΠ΅ΠΉ ΠΈ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠΉ.
ΠΠ΅ΡΠ΅ΠΌΠ½ΠΎΠΆΠΈΠ² ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ ΠΌΠ°ΡΡΠΈΡΡ ΠΈ Π²Π΅ΠΊΡΠΎΡ L, ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π·Π°ΠΊΠΎΠ½Ρ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ Π·Π°Ρ Π²Π°ΡΠ° ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ:
ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅, ΡΠΊΠΎΡΠΎΡΡΡ ΠΈ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ ΠΏΠΎ 4 Π·Π°ΠΊΠΎΠ½Ρ:
f T<=T1 then.
begin.
q:=H*Sqr (T) / (2*T1*(Tau — T1));
q1:=H/(T1*(Tau-T1))*T;
q2:=H/(T1*(Tau-T1));
end else.
if T<=(Tau-T1) then.
begin.
q:=H*(2*T-T1)/(2*(Tau-T1));
q1:=H/(Tau-T1);
q2:=0;
end.
else.
if T<=Tau then.
begin.
q:=H*(1-Sqr (Tau-T)/(2*T1*(Tau-T1)));
q1:=H/(T1*(Tau-T1))*(Tau-T);
q2:=-H/(T1*(Tau-T1)); +.
end;
ΡΠ΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
unit Unit1;
interface.
uses.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,.
Dialogs, StdCtrls, ExtCtrls, Grids, ComOBJ;
type.
TForm1 = class (TForm).
Button1: TButton;
Button2: TButton;
Timer1: TTimer;
StringGrid1: TStringGrid;
Image1: TImage;
Image2: TImage;
Image3: TImage;
Image4: TImage;
Image5: TImage;
Image6: TImage;
procedure FormCreate (Sender: TObject);
procedure Button1Click (Sender: TObject);
procedure Timer1Timer (Sender: TObject);
private public end;
var.
Form1: TForm1;
implementation.
{$R *.dfm}.
const.
ax=0.2; ay=0.2; az=0.2;
bx=0.8; by=0.5; bz=0.7;
L1=0.2; L2=0.2;
aFi=0.0; aPsi=0.0; aL3=0.2;
bFi=0.52 955 776 771 375 357 952; bPsi=0.27 980 931 571 248 898 048; bL3=1.862 780 491 200 215 680;
var.
Tau, T1, dT, T, tx, ty, tz: Single;
HFi, HPsi, Hl3, qFi, qPsi, qL3, q1Fi, q1Psi, q1L3, q2Fi, q2Psi, q2L3: Single;
Step, Kol_Step:Integer;
procedure Low2(H, Tau, T1, T:Single; var q, q1, q2:Single);
begin.
if T<=T1 then.
begin.
q:=H*Sqr (T) / (2*T1*(Tau — T1));
q1:=H/(T1*(Tau-T1))*T;
q2:=H/(T1*(Tau-T1));
end else.
if T<=(Tau-T1) then.
begin.
q:=H*(2*T-T1)/(2*(Tau-T1));
q1:=H/(Tau-T1);
q2:=0;
end.
else.
f T<=Tau then.
begin.
q:=H*(1-Sqr (Tau-T)/(2*T1*(Tau-T1)));
q1:=H/(T1*(Tau-T1))*(Tau-T);
q2:=-H/(T1*(Tau-T1));
end;
end;
function GetX (Fi, Psi, L3: Single):Single;
begin.
// Result:=L3*cos (Fi)*cos (Psi)+L2*sin (Fi)+L1*sin (Fi);
Result:= Cos (fi)*Cos (Psi)*L3 — Sin (Fi)*L2;
end;
function GetY (Psi, L3: Single):Single;
begin.
Result:= Sin (psi)*L3 + L1;
end;
function GetZ (Fi, Psi, L3: Single):Single;
begin.
Result:= Sin (Fi) * Cos (Psi)*L3 + Cos (Fi)*L2;
end;
procedure TForm1. FormCreate (Sender: TObject);
begin.
Tau:=2;
T1:=0.45;
Kol_Step:=40;
end;
procedure TForm1. Button1Click (Sender: TObject);
var i: integer;
begin.
with StringGrid1 do begin.
Cells[0,1]: ='Fi'; Cells[0,2]: ='Psi'; Cells[0,3]: ='L3';
Cells[0,4]:='V (Fi)'; Cells[0,5]: ='V (Psi)'; Cells[0,6]: ='V (L3)';
Cells[0,7]:='a (Fi)'; Cells[0,8]: ='a (Psi)'; Cells[0,9]: ='a (L3)';
ColCount:=Kol_Step+2;
Cells[1,0]:='0';
For i:=2 to Kol_Step+1 do.
Cells[i, 0]: =FloatToStr (Tau/Kol_Step*(i-1));
end;
Step:=0;
tx:=ax; ty:=ay; tz:=az;
with Image4. Canvas do begin.
Pen.Color:=clGreen;
MoveTo (10+Round (ax*200), 300);
LineTo (10+Round (ax*200+0.7*ay*200), 300-Round (0.7*ay*200));
MoveTo (10+Round (0.7*ay*200), 300-Round (0.7*ay*200));
LineTo (10+Round (ax*200+0.7*ay*200), 300-Round (0.7*ay*200));
ineTo (10+Round (ax*200+0.7*ay*200), 300-Round (0.7*ay*200+az*200));
end;
T:=0;
HFi:=-aFi+bFi; HPsi:=ABS (-aPsi+bPsi); HL3:=ABS (-aL3+bL3);
qFi:=aFi; qPsi:=aPsi; qL3:=aL3;
q1Fi:=0; q1Psi:=0; q1L3:=0;
q2Fi:=0; q2Psi:=0; q2L3:=0;
with StringGrid1 do begin.
Cells[Step+1,1]: =FloatToStr (qFi);
Cells[Step+1,2]:=FloatToStr (qPsi);
Cells[Step+1,3]:=FloatToStr (qL3);
Cells[Step+1,4]:=FloatToStr (q1Fi);
Cells[Step+1,5]:=FloatToStr (q1Psi);
Cells[Step+1,6]:=FloatToStr (q1L3);
Cells[Step+1,7]:=FloatToStr (q2Fi);
Cells[Step+1,8]:=FloatToStr (q2Psi);
Cells[Step+1,9]:=FloatToStr (q2L3);
end;
Image1.Canvas.MoveTo (20+Step*5,200-Round (qFi*200));
Image2.Canvas.MoveTo (20+Step*5,200-Round (q1Fi*300));
Image3.Canvas.MoveTo (20+Step*5,100-Round (q2Fi*80));
Image5.Canvas.MoveTo (20+Step*5,200-Round (q1L3*300));
Image6.Canvas.MoveTo (20+Step*5,100-Round (q2L3*80));
dT:=(Tau/Kol_Step);
Timer1.Interval:=round (dT*10);
Timer1.Enabled:=true;
end;
procedure TForm1. Timer1Timer (Sender: TObject);
var.
x, y, z:Single;
begin.
Inc (Step);
Timer1.Enabled:=False;
T:=T+dT;
Low2(HFi, Tau, T1, T, qFi, q1Fi, q2Fi);
Low2(HPsi, Tau, T1, T, qPsi, q1Psi, q2Psi);
Low2(HL3,Tau, T1, T, qL3, q1L3,q2L3);
qFi:=qFi+aFi;
qPsi:=qPsi+aPsi;
qL3:=qL3+aL3;
x:=GetX (qFi, qPsi, qL3);
y:=GetY (qPsi, qL3);
z:=GetZ (qFi, qPsi, qL3);
with Image4. Canvas do begin.
Pen.Color:=clBlack;
LineTo (10+Round (x*200+0.7*y*200), 300-Round (0.7*y*200+z*200));
Pen.Color:=clGreen;
MoveTo (10+Round (x*200), 300);
LineTo (10+Round (x*200+0.7*y*200), 300-Round (0.7*y*200));
MoveTo (10+Round (0.7*y*200), 300-Round (0.7*y*200));
LineTo (10+Round (x*200+0.7*y*200), 300-Round (0.7*y*200));
LineTo (10+Round (x*200+0.7*y*200), 300-Round (0.7*y*200+z*200));
end;
if Step=Kol_Step.
then.
begin.
Fi:=bFi; qPsi:=bPsi; qL3:=bL3;
q1Fi:=0; q1Psi:=0; q1L3:=0;
q2Fi:=0; q2Psi:=0; q2L3:=0;
end;
with StringGrid1 do begin.
Cells[Step+1,1]: =FloatToStr (qFi);
Cells[Step+1,2]:=FloatToStr (qPsi);
Cells[Step+1,3]:=FloatToStr (qL3);
Cells[Step+1,4]:=FloatToStr (q1Fi);
Cells[Step+1,5]:=FloatToStr (q1Psi);
Cells[Step+1,6]:=FloatToStr (q1L3);
Cells[Step+1,7]:=FloatToStr (q2Fi);
Cells[Step+1,8]:=FloatToStr (q2Psi);
Cells[Step+1,9]:=FloatToStr (q2L3);
end;
Image1.Canvas.LineTo (20+Step*5,200-Round (qFi*200));
Image2.Canvas.LineTo (20+Step*5,200-Round (q1Fi*200));
Image3.Canvas.LineTo (20+Step*5,100-Round (q2Fi*50));
Image5.Canvas.LineTo (20+Step*5,200-Round (q1L3*200));
Image6.Canvas.LineTo (20+Step*5,100-Round (q2L3*50));
tx:=x; ty:=y; tz:=z;
if Step.
end;
end.
ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΠΊΠΎΠ².
Fi. | Psi. | L3. | V (Fi). | V (Psi). | V (L3). | a (Fi). | a (Psi). | a (L3). | X. | Y. | Z. | ||
0,00. | 0,00. | 0,00. | 0,20. | 0,00. | 0,00. | 0,00. | 0,00. | 0,00. | 0,00. | 0,20. | 0,20. | 0,20. | |
0,05. | 0,00. | 0,00. | 0,20. | 0,04. | 0,02. | 0,06. | 0,76. | 0,40. | 1,27. | 0,20. | 0,20. | 0,20. | |
0,10. | 0,00. | 0,00. | 0,21. | 0,08. | 0,04. | 0,13. | 0,76. | 0,40. | 1,27. | 0,21. | 0,20. | 0,20. | |
0,15. | 0,01. | 0,00. | 0,21. | 0,11. | 0,06. | 0,19. | 0,76. | 0,40. | 1,27. | 0,21. | 0,20. | 0,20. | |
0,20. | 0,02. | 0,01. | 0,23. | 0,15. | 0,08. | 0,25. | 0,76. | 0,40. | 1,27. | 0,22. | 0,20. | 0,20. | |
0,25. | 0,02. | 0,01. | 0,24. | 0,19. | 0,10. | 0,32. | 0,76. | 0,40. | 1,27. | 0,23. | 0,20. | 0,21. | |
0,30. | 0,03. | 0,02. | 0,26. | 0,23. | 0,12. | 0,38. | 0,76. | 0,40. | 1,27. | 0,25. | 0,20. | 0,21. | |
0,35. | 0,05. | 0,02. | 0,28. | 0,27. | 0,14. | 0,44. | 0,76. | 0,40. | 1,27. | 0,27. | 0,21. | 0,21. | |
0,40. | 0,06. | 0,03. | 0,30. | 0,30. | 0,16. | 0,51. | 0,76. | 0,40. | 1,27. | 0,29. | 0,21. | 0,22. | |
0,45. | 0,08. | 0,04. | 0,33. | 0,34. | 0,18. | 0,57. | 0,00. | 0,00. | 0,00. | 0,31. | 0,21. | 0,22. | |
0,50. | 0,09. | 0,05. | 0,36. | 0,34. | 0,18. | 0,57. | 0,00. | 0,00. | 0,00. | 0,34. | 0,22. | 0,23. | |
0,55. | 0,11. | 0,06. | 0,39. | 0,34. | 0,18. | 0,57. | 0,00. | 0,00. | 0,00. | 0,36. | 0,22. | 0,24. | |
0,60. | 0,13. | 0,07. | 0,41. | 0,34. | 0,18. | 0,57. | 0,00. | 0,00. | 0,00. | 0,38. | 0,23. | 0,25. | |
0,65. | 0,15. | 0,08. | 0,44. | 0,34. | 0,18. | 0,57. | 0,00. | 0,00. | 0,00. | 0,41. | 0,23. | 0,26. | |
0,70. | 0,16. | 0,09. | 0,47. | 0,34. | 0,18. | 0,57. | 0,00. | 0,00. | 0,00. | 0,43. | 0,24. | 0,27. | |
0,75. | 0,18. | 0,09. | 0,50. | 0,34. | 0,18. | 0,57. | 0,00. | 0,00. | 0,00. | 0,45. | 0,25. | 0,29. | |
0,80. | 0,20. | 0,10. | 0,53. | 0,34. | 0,18. | 0,57. | 0,00. | 0,00. | 0,00. | 0,48. | 0,25. | 0,30. | |
0,85. | 0,21. | 0,11. | 0,56. | 0,34. | 0,18. | 0,57. | 0,00. | 0,00. | 0,00. | 0,50. | 0,26. | 0,31. | |
0,90. | 0,23. | 0,12. | 0,59. | 0,34. | 0,18. | 0,57. | 0,00. | 0,00. | 0,00. | 0,52. | 0,27. | 0,33. | |
0,95. | 0,25. | 0,13. | 0,61. | 0,34. | 0,18. | 0,57. | 0,00. | 0,00. | 0,00. | 0,54. | 0,28. | 0,34. | |
1,00. | 0,26. | 0,14. | 0,64. | 0,34. | 0,18. | 0,57. | 0,00. | 0,00. | 0,00. | 0,56. | 0,29. | 0,36. | |
1,05. | 0,28. | 0,15. | 0,67. | 0,34. | 0,18. | 0,57. | 0,00. | 0,00. | 0,00. | 0,58. | 0,30. | 0,38. | |
1,10. | 0,30. | 0,16. | 0,70. | 0,34. | 0,18. | 0,57. | 0,00. | 0,00. | 0,00. | 0,60. | 0,31. | 0,39. | |
1,15. | 0,32. | 0,17. | 0,73. | 0,34. | 0,18. | 0,57. | 0,00. | 0,00. | 0,00. | 0,62. | 0,32. | 0,41. | |
1,20. | 0,33. | 0,18. | 0,76. | 0,34. | 0,18. | 0,57. | 0,00. | 0,00. | 0,00. | 0,64. | 0,33. | 0,43. | |
1,25. | 0,35. | 0,19. | 0,79. | 0,34. | 0,18. | 0,57. | 0,00. | 0,00. | 0,00. | 0,66. | 0,34. | 0,45. | |
1,30. | 0,37. | 0,19. | 0,81. | 0,34. | 0,18. | 0,57. | 0,00. | 0,00. | 0,00. | 0,67. | 0,36. | 0,47. | |
1,35. | 0,38. | 0,20. | 0,84. | 0,34. | 0,18. | 0,57. | 0,00. | 0,00. | 0,00. | 0,69. | 0,37. | 0,50. | |
1,40. | 0,40. | 0,21. | 0,87. | 0,34. | 0,18. | 0,57. | 0,00. | 0,00. | 0,00. | 0,71. | 0,38. | 0,52. | |
1,45. | 0,42. | 0,22. | 0,90. | 0,34. | 0,18. | 0,57. | 0,00. | 0,00. | 0,00. | 0,72. | 0,40. | 0,54. | |
1,50. | 0,44. | 0,23. | 0,93. | 0,34. | 0,18. | 0,57. | 0,00. | 0,00. | 0,00. | 0,74. | 0,41. | 0,56. | |
1,55. | 0,45. | 0,24. | 0,96. | 0,34. | 0,18. | 0,57. | 0,00. | 0,00. | 0,00. | 0,75. | 0,43. | 0,59. | |
1,60. | 0,47. | 0,25. | 0,98. | 0,30. | 0,16. | 0,51. | — 0,76. | — 0,40. | — 1,27. | 0,76. | 0,44. | 0,61. | |
1,65. | 0,48. | 0,26. | 1,01. | 0,27. | 0,14. | 0,44. | — 0,76. | — 0,40. | — 1,27. | 0,77. | 0,45. | 0,63. | |
1,70. | 0,50. | 0,26. | 1,03. | 0,23. | 0,12. | 0,38. | — 0,76. | — 0,40. | — 1,27. | 0,78. | 0,47. | 0,65. | |
1,75. | 0,51. | 0,27. | 1,05. | 0,19. | 0,10. | 0,32. | — 0,76. | — 0,40. | — 1,27. | 0,79. | 0,48. | 0,66. | |
1,80. | 0,51. | 0,27. | 1,06. | 0,15. | 0,08. | 0,25. | — 0,76. | — 0,40. | — 1,27. | 0,79. | 0,48. | 0,68. | |
1,85. | 0,52. | 0,28. | 1,07. | 0,11. | 0,06. | 0,19. | — 0,76. | — 0,40. | — 1,27. | 0,80. | 0,49. | 0,69. | |
1,90. | 0,53. | 0,28. | 1,08. | 0,08. | 0,04. | 0,13. | — 0,76. | — 0,40. | — 1,27. | 0,80. | 0,50. | 0,69. | |
1,95. | 0,53. | 0,28. | 1,08. | 0,04. | 0,02. | 0,06. | — 0,76. | — 0,40. | — 1,27. | 0,80. | 0,50. | 0,70. | |
2,00. | 0,53. | 0,28. | 1,09. | 0,00. | 0,00. | 0,00. | 0,00. | 0,00. | 0,00. | 0,80. | 0,50. | 0,70. | |
Π’ΡΠ°Π΅ΠΊΡΠΎΡΠΈΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ Π·Π°Ρ Π²Π°ΡΠ° ΠΈ Π³ΡΠ°ΡΠΈΠΊ ΠΏΡΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π·Π²Π΅Π½Π° (ΠΏΠΎ Π·Π°Π΄Π°Π½ΠΈΡ).
Π ΠΈΡ. 3.
ΠΡΠ°ΡΠΈΠΊΠΈ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΈ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ Π·Π°Ρ Π²Π°ΡΠ° Π ΠΈΡ. 4.
ΠΡΠ°ΡΠΈΠΊΠΈ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΈ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π·Π²Π΅Π½Π°.
Π ΠΈΡ. 5.
ΠΠΈΠ½Π΅ΠΌΠ°ΡΠΈΠΊΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΎΡΠΎΠΌ.
ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ ΠΠΎ Π²ΡΠΎΡΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΊΡΡΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΎΡ Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ ZOX. Π ΡΡΠΎΠΉ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ ΠΏΠΎΠ΄ ΡΠ³Π»ΠΎΠΌ 60 Π΄Π΅ΡΠ°Π»Ρ Π΄Π²ΠΈΠΆΠ΅ΡΡΡ ΠΈΠ· Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΡΠΎΡΠΊΠΈ ΠΈ ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΡ ΡΠΊΠΎΡΠΎΡΡΡ. ΠΠ°Π΄Π°ΡΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΎΡΡΡΠΊΠ°Π½ΠΈΠΈ Π·Π°ΠΊΠΎΠ½ΠΎΠ², ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΡ Π·Π²Π΅Π½ΡΠ΅Π² ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΎΡΠ° Π·Π° ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ Π·Π°Ρ Π²Π°ΡΠΈΡΡ ΡΡΡ Π΄Π΅ΡΠ°Π»Ρ.
ΠΡΠ²ΠΎΠ΄ ΡΠΎΡΠΌΡΠ» ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π·Π°Π΄Π°ΡΡΡΡ:
ΠΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΈ ΡΠΊΠΎΡΠΎΡΡΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ Π΄Π΅ΡΠ°Π»ΠΈ Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ ZOX (Xd, Zd, Vd).
ΠΠ»ΠΈΠ½Π° ΡΡΠΊΠΈ ΡΠΎΠ±ΠΎΡΠ° (L3).
ΠΠΎΡΡΡΠΎΠΈΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡ ΡΠΎΠ±ΠΎΡΠ° Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ ZOX.
Π ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ ZOX Π²ΠΈΠ΄Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ L2 ΠΈ L3.
ΠΠ°ΠΊΠΎΠ½Ρ:
Vdx=Vd*cos60 Vdz=Vd*sin60.
Xd=Xd+Vdx*t.
Zd=Zd+Vdz*t Π·Π΄Π΅ΡΡ tΡΠ°Π³ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π‘ΠΊΠΎΡΠΎΡΡΡ Π² ΡΠΎΡΠΊΠ΅ Π·Π°Ρ Π²Π°ΡΠ°:
Vcx=Vdx+(Xc-Xd)/T.
Vcz=Vdz+(Zc-Zd)/T Π³Π΄Π΅ T=-t/ln (0,001).
Xc:=L3*cos (Fi)-L2*sin (Fi);
Zc:=L3*sin (Fi)+L2*cos (Fi);
ΠΠ΅ΡΠ΅ΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΡ ΠΎΡ Xc, Zc. Π Π² ΠΈΡΠΎΠ³Π΅, ΠΏΠΎΡΠ»Π΅ Π΄ΠΎΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Π½Π° sin (Fi) ΠΈΠ»ΠΈ cos (Fi), Π° Π·Π°ΡΠ΅ΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ, ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠΎΡΠΌΡΠ»Ρ:
V:=(Vcx*sin (Fi))-(Vcz*cos (Fi));
W:=((Vcx*cos (Fi))+(Vcz*sin (Fi)))/L3;
ΠΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π² ΡΠΎΡΠΊΠ΅ Π·Π°Ρ Π²Π°ΡΠ°:
Xc=Xc+Vcx*t.
Zc=Zc+Vcz*t.
ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΠΊΠΎΠ² ΠΡ ΠΎΠ΄Π½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ: ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π΄Π΅ΡΠ°Π»ΠΈ (0,700), ΡΠΊΠΎΡΠΎΡΡΡ Π΄Π΅ΡΠ°Π»ΠΈ 0,2 ΠΌ/Ρ, Π΄Π»ΠΈΠ½Π° ΡΡΠΊΠΈ ΡΠΎΠ±ΠΎΡΠ° 1 ΠΌ, ΡΠ³ΠΎΠ» Π½Π°ΠΊΠ»ΠΎΠ½Π° ΡΡΠΊΠΈ 100 Π³ΡΠ°Π΄ΡΡΠΎΠ², Π²ΡΠ΅ΠΌΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ ΡΠ°Π²Π½ΠΎ 4.
V. | W. | Xd. | Yd. | Xr. | Yr. | ||
0,00. | 0,00. | 0,00. | 0,00. | 700,00. | 720,00. | 707,00. | |
0,20. | — 0,48. | 0,34. | 20,00. | 734,60. | 742,20. | 707,30. | |
0,40. | — 0,28. | 0,42. | 60,00. | 803,90. | 637,00. | 750,00. | |
0,60. | — 0,09. | 0,47. | 100,00. | 873,20. | 553,50. | 798,00. | |
0,80. | 0,07. | 0,47. | 140,00. | 942,50. | 489,60. | 851,00. | |
1,00. | 0,20. | 0,44. | 180,00. | 1012,00. | 444,70. | 909,30. | |
1,20. | 0,31. | 0,37. | 220,00. | 1081,00. | 418,30. | 973,00. | |
1,40. | 0,38. | 0,31. | 260,00. | 1150,00. | 408,60. | 1042,00. | |
1,60. | 0,42. | 0,24. | 300,00. | 1220,00. | 412,60. | 1116,00. | |
1,80. | 0,45. | 0,19. | 340,00. | 1289,00. | 427,20. | 1193,00. | |
2,00. | 0,46. | 0,15. | 380,00. | 1358,00. | 449,50. | 1272,00. | |
2,20. | 0,47. | 0,12. | 420,00. | 1427,00. | 477,20. | 1352,00. | |
2,40. | 0,47. | 0,09. | 460,00. | 1497,00. | 508,70. | 1432,00. | |
2,60. | 0,47. | 0,08. | 500,00. | 1566,00. | 542,80. | 1512,00. | |
2,80. | 0,46. | 0,06. | 540,00. | 1635,00. | 578,80. | 1591,00. | |
3,00. | 0,46. | 0,05. | 580,00. | 1705,00. | 615,90. | 1670,00. | |
3,20. | 0,45. | 0,04. | 620,00. | 1774,00. | 654,00. | 1747,00. | |
3,40. | 0,44. | 0,04. | 660,00. | 1843,00. | 692,60. | 1824,00. | |
3,60. | 0,44. | 0,03. | 700,00. | 1912,00. | 730,60. | 1897,00. | |
3,80. | 0,44. | 0,03. | 740,00. | 1982,00. | 740,00. | 1982,00. | |
Π ΠΈΡ. 6.
Π ΠΈΡ. 7.
Π ΠΈΡ. 8.
ΠΊΠΈΠ½Π΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΎΡ Π·Π°Ρ Π²Π°Ρ Π·Π²Π΅Π½ΠΎ.
Π’Π΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
unit Unit1;
interface.
uses.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,.
Dialogs, Grids, StdCtrls, ExtCtrls, ComOBJ;
type.
TForm1 = class (TForm).
StringGrid1: TStringGrid;
Timer1: TTimer;
Button1: TButton;
Image1: TImage;
Image2: TImage;
Image3: TImage;
Label1: TLabel;
Button2: TButton;
procedure FormCreate (Sender: TObject);
procedure Timer1Timer (Sender: TObject);
procedure Button1Click (Sender: TObject);
procedure Button2Click (Sender: TObject);
private public end;
var.
Form1: TForm1;
implementation.
{$R *.dfm}.
var.
VDX, VDY, Vd, Alpha, T, Tau, TCatch, d, dT:Single;
Xd, Yd, Xd0, Yd0,L, L3, Fi, Fi0: Single;
Old_CX, Cur_CX, Old_CY, Cur_CY, Old_DX, Cur_DX,.
Old_DY, Cur_DY, Old_V, Cur_V, Old_W, Cur_W, X_c, Y_c:Single;
H, LF, Takt: Integer;
Fail:Boolean;
procedure InitManipul;
begin.
VDX:=Vd*1000*cos (Alpha*pi/180);
VDY:=Vd*1000*sin (Alpha*pi/180);
T:=(Tau/1.7)/ln (10);
TCatch:=0; Fail:=False;
Xd:=Xd0; Yd:=Yd0;
L:=L3; Fi:=Fi0;
end;
procedure InitStrGr (T:word;V, W: Single);
var i: word;
begin.
with Form1. StringGrid1 do.
begin.
Cells[0,1]: ='V';
Cells[0,2]:='W';
ColCount:=T+2;
for i:=0 to T do.
Cells[i+1,0]: =FloatToStrF (i*dT, ffGeneral, 4,2);
Cells[T+1,1]:=FloatToStrF (V/1000,ffGeneral, 4,2);
Cells[T+1,2]:=FloatToStrF (W, ffGeneral, 4,2);
end;
end;
procedure DrawGraf;
var MT, MV, MW: Single;
const Cx=15; Cy=100; dH=10;
begin.
with Form1 do begin.
image1.Canvas.Pen.Color:=clBlue;
image1.Canvas.MoveTo (Round (Old_CX/10), 250-Round (Old_CY/10));
image1.Canvas.LineTo (Round (Cur_CX/10), 250-Round (Cur_CY/10));
image1.Canvas.Pen.Color:=clRed;
image1.Canvas.MoveTo (Round (Old_DX/10), 250-Round (Old_DY/10));
image1.Canvas.LineTo (Round (Cur_DX/10), 250-Round (Cur_DY/10));
MT:=(image2.Width-2*Cx)/(Tau/dt);
MV:=(image2.Height-2*dH)/(2*Vd*3*1000);
image2.Canvas.MoveTo (Round ((CX+(Takt-1)*MT)), 220-Round ((CY-Old_V*MV)));
image2.Canvas.LineTo (Round ((CX+Takt*MT)), 220-Round ((CY-Cur_V*MV)));
MT:=(Image3.Width-2*Cx)/(Tau/dT);
MW:=(Image3.Height-2*dH)/2;
image3.Canvas.MoveTo (Round ((CX+(Takt-1)*MT)), 250-Round ((CY-Old_W*MW)*2));
image3.Canvas.LineTo (Round ((CX+Takt*MT)), 250-Round ((CY-Cur_W*MW)*2));
Old_CX:=Cur_CX; Old_CY:=Cur_CY;
Old_DX:=Cur_DX; Old_DY:=Cur_DY;
Old_V:=Cur_V; Old_W:=Cur_W;
end;
end;
procedure TForm1. FormCreate (Sender: TObject);
begin.
Xd0:=0; Yd0:=700; Vd:=0.2;
Alpha:=60; L3:=1000; Fi0:=100;
Tau:=4; d:=1; dT:=0.2;
H:=500; LF:=20 000; Takt:=0;
InitStrGr (Takt, 0,0);
end;
procedure TForm1. Button1Click (Sender: TObject);
begin.
InitManipul;
Timer1.Enabled:=true;
Timer1.Interval:=round (dt*500);
Takt:=0;
Old_CX:=H*cos (Fi0*pi/180)+L3*Sin (Fi0*pi/180);
Old_CY:=H*sin (Fi0*pi/180)-L3*cos (Fi0*pi/180);
X_c:=Old_CX; Y_c:=Old_CY;
Old_DX:=Xd0; Old_DY:=Yd0;
Old_V:=0; Old_W:=0;
end;
procedure TForm1. Timer1Timer (Sender: TObject);
var RFi, V, W, VCx, VCy: Single;
begin.
Inc (Takt);
RFi:=Fi*pi/180;
X_c:=H*cos (RFi)+L*Sin (RFi); Y_c:=H*sin (RFi)-L*cos (RFi);
VCx:=VDX+((Xd-X_c)/T); VCy:=VDY+((Yd-Y_c)/T);
X_c:=X_c+VCx*dT; Y_c:=Y_c+VCy*dT;
Xd:=Xd+VDX*dT; Yd:=Yd+VDY*dT;
TCatch:=TCatch+dT;
if L<=0 then L:=1;
V:=(VCx*sin (RFi))-(VCy*cos (RFi))+H/2;
W:=((VCx*cos (RFi))+(VCy*sin (RFi)))/L;
InitStrGr (Takt, V, W);
Xd:=Xd+(VDX*dT); Yd:=Yd+(VDY*dT);
L:=L+(V*dT);
Fi:=Fi+(W*dT*180/pi);
Cur_CX:=X_c; Cur_CY:=Y_c;
Cur_DX:=Xd; Cur_DY:=Yd;
Cur_V:=V; Cur_W:=W;
DrawGraf;
if (abs (X_c-Xd)<=d) and (abs (Y_c-Yd)<=d) then begin.
Label1.Caption:='Goal';
Timer1.Enabled:=false;
end;
if TCatch>Tau then begin.
Timer1.Enabled:=false;
Label1.Caption:='Out of time';
end;
if L>LF then begin.
Timer1.Enabled:=false;
Label1.Caption:='Out of Speed';
end;
end;
Procedure StrGridToExcel (SG:TStringGrid; InverceRows: Boolean);
Var.
ExcelApp, Workbook: OLEVariant;
EndRow, EndCol, BeginCol, BeginRow, i, j: integer;
Begin.
ExcelApp:= CreateOleObject ('Excel.Application');
ExcelApp.Application.EnableEvents:= false;
Workbook:= ExcelApp.WorkBooks.Add;
BeginCol:=0;
BeginRow:=0;
EndCol:=SG.ColCount+1;
EndRow:=SG.RowCount+1;
If InverceRows then.
begin.
For i:=BeginCol to EndCol do.
For j:=BeginRow to EndRow do.
Try.
ExcelApp.WorkSheets[1]. Cells[i+1,j+1]:=StrToFloat (SG.Cells[i, j]);
Except.
ExcelApp.WorkSheets[1].Cells[i+1,j+1]:=SG.Cells[i, j];
End;
end.
Else.
begin.
For i:=BeginCol to EndCol do.
For j:=BeginRow to EndRow do.
Try.
ExcelApp.WorkSheets[1]. Cells[i+1,j+1]:=StrToFloat (SG.Cells[j, i]);
Except.
ExcelApp.WorkSheets[1].Cells[i+1,j+1]:=SG.Cells[j, i];
End;
end;
ExcelApp.Visible:= true;
End;
procedure TForm1. Button2Click (Sender: TObject);
begin.
StrGridToExcel (StringGrid1,True);
end;
end.