Описание работы программного продукта




 

Электронный ресурс «Моделирование колебаний шарика на жёстком стержне в вязкой среде» для студентов всех ВУЗов и средних профессиональных учебных заведений предназначено для подготовки к практическим и лабораторным занятиям, осуществления самостоятельной работы студентов, изучающих общую и теоретическую физику.

Программный продукт выполнен в средах Movie Maker и Turbo Delphi. Чтобы запустить программу нужно выбрать из папки «Маятник» файл Project1.exe.

При запуске этого файла перед пользователем открывается главное окно, содержащие поля ввода параметров физического эксперимента, поля вывода посчитанных значений, поле для вывода графика и кнопки, при нажатии на которые происходит то или иное событие.

 

 

В левом верхнем углу формы находится кнопка «меню». При нажатии кнопки «Меню» осуществляется переход к разделам меню. Оно содержит такие разделы, как:

· настройки

· теоретическая справка

· о программе

· выход

 

 

В разделе «Настройки» пользователь может ввести значение: предел угла на графике, предел угловой скорости на графике, нижний предел энергии Е на графике и шаг интегрирования, те значения которые он считает нужными. В зависимости от выбора данных параметров пользователь может получить различные формы графика плотности вероятности.

 

 


В опции меню «Теоретическая справка» пользователь может получить справочный материал относительно математического маятника и колебаниях, а также посмотреть нужные формулы.

 

 

В разделе «О программе» пользователь получает информацию относительно программы.

 

 

При нажатии раздела «Выход» форма закрывается, и пользователь выходит из программы.

 

 


Под кнопкой «Меню» на панели располагаются 8 окон ввода, в которые можно вносить заданные параметры: диаметр шара, массу шара, длину стержня, плотность среды, вязкость среды, начальный угол, начальная угловая скорость, конечное время и изменять их.

 

 

За ячейками располагается кнопка «Видео», при нажатии которой воспроизводится демонстрационное видео. На данном видео можно посмотреть порядок выполнения эксперимента.

 


При нажатии на кнопку «Старт» справа выводятся 4 графика:

1) график зависимости угла от времени

2) график зависимости угловой скорости от времени

3) график зависимости полной энергии колебаний от времени

4) анимация движения маятника

 

 

При нажатии на кнопку «Стоп» программа прекращает свою работу, и начинает считывать значения: собственной частоты, собственного периода, декремента затухания, частоты, периода, добротности, плотности шарика, которые обработались до определенного момента, и записывает значения в поля, которые расположены за кнопкой видео.

 

 


При нажатии на кнопку «Очистить графики» происходит очищение графических полей:

· графика зависимости угла от времени

· графика зависимости угловой скорости от времени

· графика зависимости полной энергии колебаний от времени

· анимация движения маятника возвращается в исходное начальное положение

 

 

При нажатии на кнопку «Выход» форма закрывается.


Заключение

 

Целью курсовой работы было «создание программы, моделирующей виртуальный эксперимент».

Электронные наглядные пособия играют исключительно важную роль в образовании. Облегчая проведение экспериментов, они снимают психологический барьер в изучении физике, и делают этот процесс интересным и более простым. При грамотном применении их в учебном процессе, пособия обеспечивают повышение фундаментальности физического образования, содействуют интеграции нашей образовательной системы с образовательной системой наиболее развитых западных стран, где подобные методы обучения применяются уже давно.

В ходе работы над курсовым проектом были решены следующие задачи:

- проведен анализ теоретической и научно-методической литературы по данной теме;

- разработана программа для виртуальной лабораторной работы «Колебания материальной точки на жестком стержне в вязкой среде»;

- подготовлена методическаярекомендация лабораторной работы «Колебания материальной точки на жестком стержне в вязкой среде».

Таким образом, задачи исследования были решены и цель достигнута.

Разработанный программа может быть использован в практике работы учителей. Это будет служить не только расширению и углублению теоретических знаний, умений и навыков школьников по физике, но предполагает и практическую подготовку, усиливающую профориентационную направленность обучения.

 


Список использованной литературы

 

1. Культин Н.Б. Основы программирования в Delphi 7.- СПб.: БХВ-Петербург, 2003. - 608 с.: ил.

2. Галисеев Г.В. Программирование в среде Delphi.. Самоучитель:

— М.: Издательский дом "Вильяме", 2004. — 304 с.: ил.

3. М.В. Сухарев. Основы Delphi. Профессиональный подход — СПб.: Наука и Техника, 2004. — 600 с.: ил.

4. Стивене Р. Delphi. Готовые алгоритмы / Род Стивене; Пер. с англ. Мерещука П. А. - 2-е изд., стер. - М.: ДМК Пресс; СПб.: Питер, 2004. - 384 с.: ил.

5. Фленов М. Программирование в Delphi глазами хакера. — СПб.: БХВ-Петербург, 2004. - 368 с.: ил.

 


Приложения

Приложение 1

Программный код

privat

{ Private declarations }

B_Close: boolean;

X,Y,t,Dt,fi0,fi,X_O,Y_O,tend: real;

X1,Y1: real;

w0,b: real;

m,d,p,w,delta,j,E,m0,a,en,sch: real;

OT,width, height: integer;

L,LVector: integer;

fiFc, Xfc, Yfc, Xfcnad, Yfcnad, c: real;

outalfa,outomega,k1a,k1w, k2a, k2w, k3a, k3w,k4a,k4w:real;

s: string;

public

{ Public declarations }

end;

var

Form1: TForm1;

const g=9.814; dl=3.7;

implementation

{$R *.dfm}

Uses Unit4, Unit5, Unit3, Unit6;

//создание графиков и движения маятника

procedure TForm1.BStartClick(Sender: TObject);

begin

if (LabeledEdit1.Text='') or (LabeledEdit2.Text='') or (LabeledEdit3.Text='')

or (LabeledEdit4.Text='') or (LabeledEdit5.Text='') or (LabeledEdit6.Text='')

or (LabeledEdit7.Text='') or (LabeledEdit8.Text='') or (StrToFloat(LabeledEdit5.Text)=0)

or (StrToFloat(LabeledEdit4.Text)=0) and (StrToInt(LabeledEdit3.Text)=0)

or (StrToFloat(LabeledEdit8.Text)=0)

then

begin

ShowMessage('Проверте правильность ввода данных!');

exit;

end;

B_Close:=false;

BitBtn3.Enabled:=false;

BitBtn4.Enabled:=true;

BitBtn2.Enabled:=false;

LabeledEdit1.Enabled:=false;

LabeledEdit2.Enabled:=false;

LabeledEdit3.Enabled:=false;

LabeledEdit4.Enabled:=false;

LabeledEdit5.Enabled:=false;

LabeledEdit6.Enabled:=false;

LabeledEdit7.Enabled:=false;

LabeledEdit8.Enabled:=false;

Form4.LabeledEdit4.Enabled:=false;

L:=StrToInt(LabeledEdit3.Text); //длина нити

fi0:=StrToFloat(LabeledEdit2.Text);//начальный угол

d:=StrToFloat(LabeledEdit4.Text); //диаметр шара

m:=StrToFloat(LabeledEdit5.Text); //масса шарика

p:=StrToFloat(LabeledEdit6.Text); //плотноть среды

tend:=StrToFloat(LabeledEdit8.Text); //конечное время

w0:=StrToFloat(LabeledEdit7.Text); //начальная скороть

b:=StrToFloat(LabeledEdit1.Text); //вязкость среды

m0:=(p*PI*d*d*d)/6;

w:=w0;

t:=0;

fi0:=fi0*PI/180;

fi:=fi0;

delta:=(3*PI*b*d)/(2*m);

dt:=(2*PI*sqrt(L/g))/(StrToFloat(Form4.LabeledEdit4.Text));

j:=abs(g/l*(1-m0/m));

sch:=g/l*(1-m0/m);

en:=g*l*(m-m0);

E:=(en*(1 - cos(fi)) + (m*l*l*w*w)/2);

c:=(sqrt(j));

s:=FloatToSTR(round(c*10000)/10000);

Label16.Caption:=s+' Гц';

c:=(2*PI/sqrt(j));

s:=FloatToSTR(round(c*10000)/10000);

Label17.Caption:=s+' 1/c';

c:=delta;

s:=FloatToSTR(round(c*10000)/10000);

Label18.Caption:=s;

if delta<sqrt(j) then

a:=sqrt(j-delta*delta);

if delta>sqrt(j) then

a:=sqrt(delta*delta-j);

if delta=sqrt(j) then

a:=0;

c:=a;

s:=FloatToSTR(round(c*10000)/10000);

Label9.Caption:=s+' Гц';

c:=(2*PI)/a;

s:=FloatToSTR(round(c*10000)/10000);

Label11.Caption:=s+' 1/c';

c:=delta*((2*PI)/a);

s:=FloatToSTR(round(c*10000)/10000);

Label14.Caption:=s;

if delta<>0 then

begin

c:=PI/(delta*((2*PI)/a));

s:=FloatToSTR(round(c*10000)/10000);

Label15.Caption:=s;

end

else

Label15.Caption:='-';

c:=(6*m)/(PI*sqr(d)*d);

s:=FloatToSTR(round(c*1000)/1000);

Label12.Caption:=s+' кг/куб.м';

Chart2.BottomAxis.Maximum:=tend;

Chart3.BottomAxis.Maximum:=tend;

Chart4.BottomAxis.Maximum:=tend;

Chart4.LeftAxis.Maximum:=E+0.5*E;

Chart4.LeftAxis.Minimum:=StrToFloat(Form4.LabeledEdit3.Text);

Chart2.LeftAxis.Maximum:=StrToFloat(Form4.LabeledEdit1.Text);

Chart2.LeftAxis.Minimum:=-Chart2.LeftAxis.Maximum;

Chart3.LeftAxis.Maximum:=StrToFloat(Form4.LabeledEdit2.Text);

Chart3.LeftAxis.Minimum:=-StrToFloat(Form4.LabeledEdit2.Text);

outalfa:=fi0;

outomega:=w0;

while (not B_Close) and (t<=tend) do

begin

fi:=outalfa;

w:=outomega;

k1a:=dt*w;

k1w:=-dt*(2*delta*w+sch*sin(fi));

fi:=outalfa+k1a/2;

w:=outomega+k1w/2;

k2a:=dt*w;

k2w:=-dt*(2*delta*w+sch*sin(fi));

fi:=outalfa+k2a/2;

w:=outomega+k2w/2;

k3a:=dt*w;

k3w:=-dt*(2*delta*w+sch*sin(fi));

fi:=outalfa+k3a;

w:=outomega+k3w;

k4a:=dt*w;

k4w:=-dt*(2*delta*w+sch*sin(fi));

fi:=outalfa+(k1a+k2a*2+k3a*2+k4a)/6;

w:=outomega+(k1w+k2w*2+k3w*2+k4w)/6;

E:=en*(1 - cos(fi)) + (m*l*l*w*w)/2;

outalfa:=fi;

outomega:=w;

Chart2.Series[0].AddXY(t,fi * 180 / PI);

Chart3.Series[0].AddXY(t,w);

Chart4.Series[0].AddXY(t,E);

t:=t+Dt;

X:=X_O+dL*sin(fi);

Y:=Y_O-dL*cos(fi);

X1:=X_O+LVector*sin(fi);

Y1:=Y_O-LVector*cos(fi);

Xfc:=X-sign(w)*cos(fi);

Yfc:=Y-sign(w)*sin(fi);

Xfcnad:=X-sign(w)*(cos(fi)+0.5);

Yfcnad:=Y-sign(w)*sin(fi);

Series14.AddArrow(X,Y,Xfc,Yfc);

Series16.AddXY(Xfcnad,Yfcnad,'Fc');

Series2.Clear;

Series3.Clear;

Series6.Clear;

Series7.Clear;

Series8.Clear;

Series9.Clear;

Series13.Clear;

Series14.Clear;

Series15.Clear;

Series16.Clear;

Series2.AddXY(X_O,Y_O,'',clBlack);

Series2.AddXY(X,Y,'',clBlack);

Series6.AddArrow(X,Y,X1,Y1,'T');

Series7.AddArrow(X,Y,X,Y-LVector,'G');

Series8.AddXY(X1+0.5,Y1,'T');

Series9.AddXY(X+0.5,Y-LVector,'G');

Series15.AddXY(X+0.5,Y+1,'Fa');

Series13.AddArrow(X,Y,X,Y+1);

Series14.AddArrow(X,Y,Xfc,Yfc);

Series16.AddXY(Xfcnad,Yfcnad,'Fc');

if (round((fi*180)/PI) = 0)and (round((w*180)/PI) = 0) and (round(E) = 0) then begin

Series14.AddArrow(0,0,0,0);

Series16.Clear;

Series14.Clear;

end

else

begin

Series14.AddArrow(X,Y,Xfc,Yfc);

Series16.AddXY(Xfcnad,Yfcnad,'Fc');

end;

Timer1.Enabled:= true;

Series3.AddXY(X,Y,'',clRed);

OT:=0;

while (OT = 0) do Application.ProcessMessages;

end;

Timer1.Enabled:= false;

BitBtn4.Enabled:=false;

BitBtn2.Enabled:=true;

end;

//создание формы

procedure TForm1.FormCreate(Sender: TObject);

begin

width:=GetSystemMetrics(SM_CXSCREEN);

height:=GetSystemMetrics(SM_CYSCREEN);

form1.height:=height;

form1.width:=width;

Chart1.Height:=((Form1.Height) div 2)-80;

Chart1.Width:=((Form1.width) div 2)-160;

Chart2.Height:=((Form1.Height) div 2)-50;

Chart2.Width:=((Form1.width) div 2)-120;

Chart3.Height:=((Form1.Height) div 2)-50;

Chart3.Width:=((Form1.width) div 2)-120;

Chart4.Height:=((Form1.Height) div 2)-50;

Chart4.Width:=((Form1.width) div 2)-120;

Chart2.Top:=Panel2.Top+20;

Chart1.Top:=Panel2.Top+Chart2.Height+50;

Chart3.Top:=Chart2.Top;

Chart3.Left:=Chart2.Left+Chart2.Width;

Chart4.Top:=Chart1.Top-20;

Chart4.Left:=Chart2.Left+Chart2.Width;

if (Form1.width<1024) and (Form1.Height<768) then

begin

LabeledEdit4.Height:=LabeledEdit4.Height-5;

LabeledEdit4.Width:=LabeledEdit4.Width-5;

LabeledEdit1.Height:=LabeledEdit1.Height-5;

LabeledEdit1.Width:=LabeledEdit1.Width-5;

LabeledEdit2.Height:=LabeledEdit2.Height-5;

LabeledEdit2.Width:=LabeledEdit2.Width-5;

LabeledEdit3.Height:=LabeledEdit3.Height-5;

LabeledEdit3.Width:=LabeledEdit3.Width-5;

LabeledEdit5.Height:=LabeledEdit5.Height-5;

LabeledEdit5.Width:=LabeledEdit5.Width-5;

LabeledEdit6.Height:=LabeledEdit6.Height-5;

LabeledEdit6.Width:=LabeledEdit6.Width-5;

LabeledEdit7.Height:=LabeledEdit7.Height-5;

LabeledEdit7.Width:=LabeledEdit7.Width-5;

LabeledEdit8.Height:=LabeledEdit8.Height-5;

LabeledEdit8.Width:=LabeledEdit8.Width-5;

LabeledEdit4.Top:=LabeledEdit4.Top-15;

LabeledEdit1.Top:=LabeledEdit1.Top-53;

LabeledEdit2.Top:=LabeledEdit2.Top-78;

LabeledEdit3.Top:=LabeledEdit3.Top-23;

LabeledEdit5.Top:=LabeledEdit5.Top-19;

LabeledEdit6.Top:=LabeledEdit6.Top-50;

LabeledEdit7.Top:=LabeledEdit7.Top-80;

LabeledEdit8.Top:=LabeledEdit8.Top-82;

StaticText2.Top:=StaticText2.Top-6;

StaticText6.Top:=StaticText6.Top-105;

StaticText7.Top:=StaticText7.Top-110;

StaticText8.Top:=StaticText8.Top-115;

StaticText1.Top:=StaticText1.Top-120;

StaticText5.Top:=StaticText5.Top-126;

StaticText3.Top:=StaticText3.Top-130;

StaticText4.Top:=StaticText4.Top-135;

StaticText9.Top:=StaticText9.Top-140;

BitBtn2.Top:=BitBtn2.Top-147;

BitBtn3.Top:=BitBtn3.Top-147;

BitBtn4.Top:=BitBtn4.Top-155;

BitBtn1.Top:=BitBtn1.Top-155;

BitBtn1.Height:=BitBtn1.Height-5;

BitBtn1.Width:=BitBtn1.Width-5;

BitBtn2.Height:=BitBtn2.Height-5;

BitBtn2.Width:=BitBtn2.Width-5;

BitBtn3.Height:=BitBtn3.Height-5;

BitBtn3.Width:=BitBtn3.Width-5;

BitBtn4.Height:=BitBtn4.Height-5;

BitBtn4.Width:=BitBtn4.Width-5;

Label16.Top:=Label16.Top-105;

Label17.Top:=Label17.Top-109;

Label18.Top:=Label18.Top-116;

Label9.Top:=Label9.Top-117;

Label11.Top:=Label11.Top-125;

Label14.Top:=Label14.Top-130;

Label15.Top:=Label15.Top-137;

Label12.Top:=Label12.Top-140;

end;

if (Form1.width>1024) and (Form1.Height>768) then

begin

LabeledEdit4.Height:=LabeledEdit4.Height+5;

LabeledEdit4.Width:=LabeledEdit4.Width+5;

LabeledEdit1.Height:=LabeledEdit1.Height+5;

LabeledEdit1.Width:=LabeledEdit1.Width+5;

LabeledEdit2.Height:=LabeledEdit2.Height+5;

LabeledEdit2.Width:=LabeledEdit2.Width-5;

LabeledEdit3.Height:=LabeledEdit3.Height+5;

LabeledEdit3.Width:=LabeledEdit3.Width+5;

LabeledEdit5.Height:=LabeledEdit5.Height+5;

LabeledEdit5.Width:=LabeledEdit5.Width-5;

LabeledEdit6.Height:=LabeledEdit6.Height+5;

LabeledEdit6.Width:=LabeledEdit6.Width+5;

LabeledEdit7.Height:=LabeledEdit7.Height+5;

LabeledEdit7.Width:=LabeledEdit7.Width+5;

LabeledEdit8.Height:=LabeledEdit8.Height+5;

LabeledEdit8.Width:=LabeledEdit8.Width+5;

LabeledEdit4.Top:=LabeledEdit4.Top+15;

LabeledEdit1.Top:=LabeledEdit1.Top+58;

LabeledEdit2.Top:=LabeledEdit2.Top+78;

LabeledEdit3.Top:=LabeledEdit3.Top+30;

LabeledEdit5.Top:=LabeledEdit5.Top+23;

LabeledEdit6.Top:=LabeledEdit6.Top+53;

LabeledEdit7.Top:=LabeledEdit7.Top+80;

LabeledEdit8.Top:=LabeledEdit8.Top+82;

StaticText2.Top:=StaticText2.Top+6;

StaticText6.Top:=StaticText6.Top+125;

StaticText7.Top:=StaticText7.Top+130;

StaticText1.Top:=StaticText1.Top+135;

StaticText3.Top:=StaticText3.Top+135;

StaticText4.Top:=StaticText4.Top+135;

StaticText5.Top:=StaticText5.Top+135;

StaticText8.Top:=StaticText8.Top+135;

StaticText9.Top:=StaticText9.Top+135;

BitBtn2.Top:=BitBtn2.Top+157;

BitBtn3.Top:=BitBtn3.Top+157;

BitBtn4.Top:=BitBtn4.Top+165;

BitBtn1.Top:=BitBtn1.Top+165;

BitBtn1.Height:=BitBtn1.Height+5;

BitBtn1.Width:=BitBtn1.Width+5;

BitBtn2.Height:=BitBtn2.Height+5;

BitBtn2.Width:=BitBtn2.Width+5;

BitBtn3.Height:=BitBtn3.Height+5;

BitBtn3.Width:=BitBtn3.Width+5;

BitBtn4.Height:=BitBtn4.Height+5;

BitBtn4.Width:=BitBtn4.Width+5;

Label16.Top:=Label16.Top+125;

Label17.Top:=Label17.Top+130;

Label18.Top:=Label18.Top+135;

Label9.Top:=Label9.Top+135;

Label11.Top:=Label11.Top+135;

Label14.Top:=Label14.Top+135;

Label15.Top:=Label15.Top+135;

Label12.Top:=Label12.Top+135;

end;

tend:=10;

fi0:=StrToFloat(LabeledEdit2.Text);

Chart2.BottomAxis.Maximum:=tend;

Chart2.LeftAxis.Maximum:=fi0;

Chart2.LeftAxis.Minimum:=-fi0;

Chart3.BottomAxis.Maximum:=tend;

Chart4.BottomAxis.Maximum:=tend;

fi0:=fi0*PI/180;

LVector:=2;

X_O:=5;

Y_O:=6;

OT:= 0;

B_Close:=false;

X:=X_O+dl*sin(fi0);

Y:=Y_O-dl*cos(fi0);

if (fi < 0) then

begin

fiFc:=90;

Xfc:=X+1*sin((fiFc*180)/PI);

Yfc:=Y-1*cos((fiFc*180)/PI);

end

else

begin

fiFc:=-90;

Xfc:=X+1*sin((fiFc*180)/PI);

Yfc:=Y-1*cos((fiFc*180)/PI);

end;

Series1.AddXY(4,6,'',clBlack);

Series1.AddXY(6,6,'',clBlack);

Series5.AddXY(X_O,Y_O,'',clBlack);

Series5.AddXY(5,0.5,'',clBlack);

Series2.AddXY(X_O,Y_O,'',clBlack);

Series2.AddXY(X,Y,'',clBlack);

Series3.AddXY(X,Y,'',clRed);

//Силы, действующие на тело

X1:=X_O+LVector*sin(fi0);

Y1:=Y_O-LVector*cos(fi0);

Series6.AddArrow(X,Y,X1,Y1);

Series7.AddArrow(X,Y,X,Y-LVector);

Series8.AddXY(X1+0.5,Y1,'T');

Series9.AddXY(X+0.5,Y-LVector,'G');

Series13.AddArrow(X,Y,X,Y+1);

Series14.AddArrow(X,Y,Xfc,Yfc);

Series15.AddXY(X+0.5,Y+1,'Fa');

Series16.AddXY(Xfc+0.5,Yfc,'Fc');

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

B_Close:=true;

end;

procedure TForm1.Timer1Timer(Sender: TObject);

begin

OT:=1;

end;

procedure TForm1.BStopClick(Sender: TObject);

begin

Form4.LabeledEdit4.Enabled:=false;

Chart3.LeftAxis.RoundFirstLabel:=true;

Chart2.LeftAxis.RoundFirstLabel:=true;

BitBtn3.Enabled:=false;

if BitBtn3.Enabled=false then

begin

BitBtn2.Enabled:=true;

BitBtn4.Enabled:=false;

B_Close:=true

end else exit;

end;

procedure TForm1.LabeledEdit1KeyPress(Sender: TObject; var Key: Char);

begin

Case Key of

#8,'0'..'9',',':;

else Key:=Chr(0);

end;

end;

procedure TForm1.LabeledEdit2KeyPress(Sender: TObject; var Key: Char);

begin

Case Key of

#8,'0'..'9',',':;

else Key:=Chr(0);

end;

end;

procedure TForm1.LabeledEdit3KeyPress(Sender: TObject; var Key: Char);

begin

Case Key of

#8,'0'..'9',',':;

else Key:=Chr(0);

end;

end;

procedure TForm1.LabeledEdit4KeyPress(Sender: TObject; var Key: Char);

begin

Case Key of

#8,'0'..'9',',':;

else Key:=Chr(0);

end;

end;

procedure TForm1.LabeledEdit5KeyPress(Sender: TObject; var Key: Char);

begin

Case Key of

#8,'0'..'9',',':;

else Key:=Chr(0);

end;

end;

procedure TForm1.LabeledEdit6KeyPress(Sender: TObject; var Key: Char);

begin

Case Key of

#8,'0'..'9',',':;

else Key:=Chr(0);

end;

end;

procedure TForm1.LabeledEdit7KeyPress(Sender: TObject; var Key: Char);

begin

Case Key of

#8,'0'..'9',',':;

else Key:=Chr(0);

end;

end;

procedure TForm1.LabeledEdit8KeyPress(Sender: TObject; var Key: Char);

begin

Case Key of

#8,'0'..'9',',':;

else Key:=Chr(0);

end;

end;

procedure TForm1.N10Click(Sender: TObject);

begin

if MessageDlg('Вы действительно хотите выйти из программы?',MtConfirmation,[MbYes,mbNo],0)=MrYes then Form1.Close;

end;

//очистить графики

procedure TForm1.BitBtn2Click(Sender: TObject);

begin

Form4.LabeledEdit4.Enabled:=true;

Chart3.LeftAxis.Maximum:=3;

Chart3.LeftAxis.Minimum:=-3;

Chart2.LeftAxis.Maximum:=85;

Chart2.LeftAxis.Minimum:=-85;

Chart4.LeftAxis.Maximum:=2;

Chart4.LeftAxis.Minimum:=0;

BitBtn2.Enabled:=false;

BitBtn3.Enabled:=true;

BitBtn4.Enabled:=false;

Timer1.Enabled:= false;

Chart4.LeftAxis.AutomaticMaximum:=false;

Chart4.LeftAxis.AutomaticMinimum:=false;

Chart2.LeftAxis.AutomaticMaximum:=false;

Chart2.LeftAxis.AutomaticMinimum:=false;

LabeledEdit1.Enabled:=true;

LabeledEdit2.Enabled:=true;

LabeledEdit3.Enabled:=true;

LabeledEdit4.Enabled:=true;

LabeledEdit5.Enabled:=true;

LabeledEdit6.Enabled:=true;

LabeledEdit7.Enabled:=true;

LabeledEdit8.Enabled:=true;

Chart2.Series[0].Clear;

Chart3.Series[0].Clear;

Chart4.Series[0].Clear;

B_Close:=true;

LVector:=2;

fi0:=StrToFloat(LabeledEdit2.Text);

fi0:=fi0*PI/180;

X_O:=5;

Y_O:=6;

OT:= 0;

B_Close:=false;

X:=X_O+dL*sin(fi0);

Y:=Y_O-dL*cos(fi0);

//очистить прошлый кадр

Series2.Clear; //нить

Series3.Clear; // шар

Series6.Clear; // стрелка красная

Series7.Clear; // стрелка синяя

Series8.Clear; // T

Series9.Clear; // G

// рисуем нить и шарик

Series2.AddXY(X_O,Y_O,'',clBlack);

Series2.AddXY(X,Y,'',clBlack);

Series3.AddXY(X,Y,'',clRed);

//Силы действующие на тело

X1:=X_O+LVector*sin(fi0);

Y1:=Y_O-LVector*cos(fi0);

Series6.AddArrow(X,Y,X1,Y1);

Series7.AddArrow(X,Y,X,Y-LVector);

Series8.AddXY(X1+0.5,Y1,'T');

Series9.AddXY(X+0.5,Y-LVector,'G');

Series13.Clear;

Series14.Clear;

Series15.Clear;

Series16.Clear;

Series13.AddArrow(X,Y,X,Y+1); //Fa стрелка

Series15.AddXY(X+0.5,Y+1,'Fa'); // Fa

fiFc:=-90;

Xfc:=X+1*sin((fiFc*180)/PI);

Yfc:=Y-1*cos((fiFc*180)/PI);

Series14.AddArrow(X,Y,Xfc,Yfc);

Series16.AddXY(Xfc+0.5,Yfc,'Fc');

end;

procedure TForm1.N2Click(Sender: TObject);

begin

ShellExecute(Handle,'open','теоретическая справка.htm',nil,nil,SW_RESTORE);

end;

procedure TForm1.N4Click(Sender: TObject);

begin

Form4.Show;

end;

procedure TForm1.N6Click(Sender: TObject);

begin

Form5.Show;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

with Form6.MediaPlayer1 do

begin

Filename:= 'Video.mpg';

Open;

Form6.Show;

Display:= Form6.Panel1;

DisplayRect:= Form6.Panel1.ClientRect;

end;

end;

end.


Приложение 2



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-10-17 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: