Имитация движения в среде Lazarus. — КиберПедия 

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

Имитация движения в среде Lazarus.

2024-02-15 16
Имитация движения в среде Lazarus. 0.00 из 5.00 0 оценок
Заказать работу

Краткие теоретические сведения

 

Имитация движения в среде Lazarus . Движение некоторого объекта (геометрической фигуры ) в приложении на Lazarus, реализуется по следующему алгоритму:

1. Объект рисуется так, чтобы он был невидим (цветом фона)

2. Изменяются координаты объекта

3. Объект рисуется видимым цветом в новом месте

4. По истечении некоторого времени процесс повторяется

Интерфейс и функциональность приложения. Для реализации 1-3 пунктов алгоритма необходимы свойство Canvas (канва) формы или компонента Image, а также методы канвы, позволяющие установить цвет пера и кисти и прорисовку объекта.

Для выдерживания паузы между изображениями объекта на старом и новом месте служит компонент Timer (страница System палитры компонентов). Основные  свойства таймера:

- Enabled (true- включен, false- выключен);

- Interval (промежуток времени между срабатываниями таймера, измеряется в миллисекундах).

Как правило, при проектировании приложения таймер следует выключить, а включить программно при наступлении какого-либо события, например, щелчка на кнопке «Начать движение».

 Для движения объекта по горизонтали вправо через каждый интервал срабатывания таймера координата x увеличивается на некоторый шаг, координата y не меняется. Если движение происходит по вертикали- наоборот, меняется только y. Если надо двигать объект по некоторой сложной траектории, следует x изменять на шаг, а y вычислять как функцию от x.

Итак, для программирования движения необходимо выполнить следующие действия:

1. Разместить на форме компонент Timer. Установить его свойство Enabled в значение False. Задать интервал срабатывания таймера, например, 500 (пол-секунды). Поместить  на форму кнопку «Начать движение».

2. Задать начальные установки, например, в обработчике события «прорисовка формы». Этими установками могут быть: начальные координаты объекта, шаг изменения координаты, интервал таймера и др.

3. Написать процедуру risovanie, которая реализует вышеописанный алгоритм движения объекта

4. Описать реакцию на событие «Щелчок на кнопке». Единственное, что происходит при наступлении этого события- это включение таймера.

5. Описать реакцию на событие «срабатывание таймера» (Timer1Timer). Обработчик этого события вызывает процедуру risovanie.

Вид формы при проектировании   Вид работающего приложения (окружность движется вправо)

Пример выполнения задания

Задача. Имитировать движение планеты вокруг Солнца. Определить вид орбиты и период обращения планеты.

Запишем обезразмеренные  уравнения, описывающие движение «малого» тела вокруг неподвижного «большого». В качестве характерных величин примем расстояние от Земли до Солнца ρ = 1,496∙1011 м, (так называемая, астрономическая единица), период круговой орбиты T, соответствующий этому расстоянию, скорость движения по ней . Примем .

Соответствующие уравнения имеют вид:

Интерфейс приложения: на первой форме вводятся исходные данные

 

 

Функциональность приложения:

//процедура, реализующая один цикл движения объекта

procedure risovanie;

begin

   with Form2.Canvas do begin

        Pen.Color:=clRed;// красный «след»

           ellipse(XS,YS,XS+5,YS+5);

           //пересчет координат

           X:=X+2*pi*Vx*dt;

           Y:=Y+2*pi*Vy*dt;

Vx:=Vx-2*pi*X*dt/sqrt((X*X+Y*Y)*(X*X+Y*Y)*(X*X+Y*Y));

Vy:=Vy-2*pi*Y*dt/sqrt((X*X+Y*Y)*(X*X+Y*Y)*(X*X+Y*Y));

           t:=t+dt;

           XS:=trunc(X*Mx)+X0;

           YS:=trunc(-Y*My)+Y0;

        Pen.Color:=clBlack;//черная «планета»

        ellipse(XS,YS,XS+5,YS+5);

if (abs(X-1)<=0.01) and (abs(Y)<=0.09) and (t>dt) then begin //при возвращении в исходную точку таймер

 выключается

Form2.Timer1.Enabled:=false;

Form2.Canvas.Pen.Color:=clBlack;

 // выводится значение периода Form3.Canvas.textout(Hor+5,Ver+5,'T='+floattostrf(t,ffgeneral,4,1)); end; end;

  end;  

//при прорисовке второй формы на ней строится система координат                               

procedure TForm2.FormPaint(Sender: TObject);

begin

  Hor:=10;Ver:=10;

    x0:=Form2.Width div 2;

    y0:=Form2.Height div 2;

    Mx:=Form2.Width div 3;

    My:=Form2.Height div 3;

    t:=0;

    with Canvas do begin

       Pen.Color:=clBlack;

       Pen.Width:=2;

       MoveTo(Hor,Y0);LineTo(Form2.Width-Hor,Y0);

       MoveTo(X0,Ver);LineTo(X0,Form2.Height-Ver);

       TextOut(Form2.Width-Hor,Y0+2,'X');

       TextOut(X0-7,Ver,'Y');

                   end;

    end;

 

//при щелчке на кнопке «Начать движение» включается таймер  

procedure TForm2.Button2Click(Sender: TObject);

begin

  Timer1.Enabled:=true;

end;  

 //при каждом срабатывании таймера вызывается процедура risovanie         

procedure TForm2.Timer1Timer(Sender: TObject);

begin

risovanie;

end;    

Результат : на второй форме – траектория движения «планеты» и значение периода (в земных годах)

Задание к лабораторной работе

4. В среде Lazarus имитировать движение тела согласно варианту лабораторной работы №2.

5.  Исследовать зависимость характера движения от параметров модели.

6. Создать текстовый отчет по лабораторным работам №2-4, включающий:

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

-  результаты тестирования программы;

-  результаты, полученные в ходе выполнения заданий (в различных формах);

-  качественный анализ результатов.


Лабораторная работа №5


Поделиться с друзьями:

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.015 с.