var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btn1Click(Sender: TObject); //моделируем взлёт самолёта без нашей системы
var polosa,s,n,s1,vmax:Integer;
P,P1,v,G,i,S2,Ya,Xa,Cy,Cx,m,f:Real;
begin
polosa:=strtoint(edt2.text);
Chart1.Series[0].Clear;
Chart1.Series[1].Clear;
Chart1.Series[2].Clear;
S:=0;
v:=0;
S2:=strtofloat(edt8.text);
P:=StrToFloat(edt5.text);
m:=StrToFloat(edt3.text);
if rb1.Checked then f:=0.06; //выбор ср. величины коэфициента трения
if rb2.Checked then f:=0.06;
if rb3.Checked then f:=0.23;
if rb4.Checked then f:=0.26;
vmax:=strtoint(edt1.text)-strtoint(edt4.text);//учёт ветра
for S:=1 to polosa do begin
Chart1.Series[0].AddXY(S, vmax);
end;
v:=0;
if (P-Xa-(1.1*f*(m*g))<=0) then showmessage('сила тяги слишком мала!')
else begin
for n:=1 to polosa do begin
S:=n;
Cy:=strtofloat(edt9.text);
Cx:=strtofloat(edt6.Text);
if s=s1 then P:=P-P1;
Ya:=50;
Xa:=500;
i:=9.8*(P-Xa-(1.1*f*(m*9.8-Ya)))/m; if i<0 then break;
v:=Sqrt(Sqr(v)+(i*2)); //вычисляем скорость на каждом шаге
if v>=vmax then Break;
Chart1.Series[1].AddXY(S, v);
if (S mod 10)=0 then Chart1.Refresh;
Sleep(1);
end;
end;
btn2.Visible:=True;
end;
procedure TForm1.btn2Click(Sender: TObject);
var color: TColor;
S,S1,n1,n,polosa: integer;
flag:boolean;
P,P1,f,i,i2,G, S2, Ya, v, Cy, m, Xa, Cx, vmax, Smax2,Smax:Real;
begin
vmax:=StrToFloat(edt1.text)-StrToFloat(edt4.text);//учёт ветра
Flag:=false; //флаг остановки
P:=strtofloat(edt5.Text);
polosa:=strtoint(edt2.text);
S2:=strtofloat(edt8.text);
m:=StrToFloat(edt3.text);
P:=StrToFloat(edt5.text);
if rb1.Checked then f:=0.06;
if rb2.Checked then f:=0.06;
if rb3.Checked then f:=0.23;
if rb4.Checked then f:=0.26;
for n:=1 to Chart1.Series[1].LastValueIndex do begin //расчёт по метрам
if flag=true then break;
S:=n;
i:=(sqr(Chart1.Series[1].YValue[S])-sqr(v))/2;
Cy:=strtofloat(edt9.text);
Ya:=50;
Xa:=500;
i2:=9.8*((P*strtofloat(edt10.Text)/100)+Xa+(1.1*f*(m*9.8-Ya)))/m;
Smax2:=sqr(v)/(2*i2);
Smax:=(Sqr(Vmax)-(v*vmax))/(2*i);
if (polosa-S-10<=Smax2) and (polosa-S<=Smax) and (v
begin showmessage(floattostr(Smax)+' '+floattostr(Smax2));
flag:=true; end;
if flag=false then begin
v:=Chart1.Series[1].YValue[S];
Chart1.Series[2].AddXY(S, v);
if (S mod 5)=0 then Chart1.Refresh;
end;
if flag=true then stop(S,P,v);
if v>=vmax then break;
end;
end;
procedure TForm1.stop(S: integer; P,v: real);
var s1,polosa:integer;
F1,i,m,S2,Xa,Ya,f,Cy,Cx:Real;
begin
polosa:=strtoint(edt2.text);
S2:=strtofloat(edt8.text);
m:=StrToFloat(edt3.text);
if rb1.Checked then f:=0.06; //выбор ср. величины коэфициента трения
if rb2.Checked then f:=0.06;
if rb3.Checked then f:=0.23;
if rb4.Checked then f:=0.26;
s1:=0;
repeat
Chart1.Series[2].AddXY(S, v);
Sleep(1);
if (S mod 10)=0 then Chart1.Refresh;
inc(S);
inc(S1);
Cy:=strtofloat(edt9.text);
Cx:=strtofloat(edt6.text);
Ya:=50;
Xa:=500;
i:=9.8*((P*strtofloat(edt10.Text)/100)+Xa+(1.1*f*(m*9.8-Ya)))/m;
if (Sqr(v)-(i*2))<=0 then v:=0 else
v:=sqrt(Sqr(v)-(i*2));
if v<=0 then break;
if (S=polosa) then break;
until v=0;
end;
end.0>
Достарыңызбен бөлісу: |