Реферат Модель движения спутника вокруг планеты
Работа добавлена на сайт bukvasha.net: 2015-10-28Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
от 25%
договор
СОДЕРЖАНИЕ
Стр.
Введение · · · · · · · · · · · · · · · · · · · · · · · · 2
Описание программы · · · · · · · · · · · · · · · · · · · · 3
Вербальная постановка задачи · · · · · · · · · · · · · · · · 8
Процедура обработки событий · · · · · · · · · · · · · · · · 9
Окончательный текст программы · · · · · · · · · · · · · · ·11
Приложение 1. Содержимое диска · · · · · · · · · · · · · · 14
Список литературы · · · · · · · · · · · · · · · · · · · · 15
ВВЕДЕНИЕ |
В последнее время наблюдается рост интереса к программированию. Это связано с развитием и внедрением в повседневную жизнь информационно-коммуникационных технологий. Если человек имеет дело с компьютером или другим устройством, которое можно программировать, то рано или поздно у него возникнет желание, а иногда и необходимость, программировать.
Delphi позволяет разрабатывать как традиционные приложения Windows и приложения работы с базами данных, так и Web-приложения на основе современных технологий.
Delphi это система, в основе которой лежит технология визуального проектирования и событийного программирования. Суть этой технологии в том, что среда разработки берет на себя большую часть рутиной работы, оставляя программисту конструирование диалоговых окон и разработку функций обработки событий.
Delphi позволяет создавать программы, которые работают с графикой. Графические программы могут выводить на поверхность формы фотографии, картинки, сформированные из графических примитивов во время работы программы, или иллюстрации, созданные в графическом редакторе.
Доступ к графической поверхности объекта (свойству Graphics формы или компонента PaintBox) имеет процедура обработки события Paint. Поэтому графику должна выводить именно она.
В своей работе я продемонстрирую некоторые графические возможности среды Delphi, а также подробно распишу каждый этап создания своей программы. Также в работе продемонстрирую взаимодействие различных процедур, и применение физики для отображения заданного движения графических объектов.
ОПИСАНИЕ ПРОГРАММЫ ЗАДАЧА: Разработать графическую модель движения спутника вокруг планеты. Данную задачу будем реализовывать на Delphi. Для этого запускаем редактор Delphi и выберем опцию: «Файл» -> «Новый» -> «Приложение». В результате у нас появится вот такое окно рис.1. Рис.1. Среда Delphi. Центральную часть окна Delphi занимает окно дизайнера формы Form 1. Слева от окна дизайнера формы находится окно Object Inspector. Вкладка Properties используется для редактирования свойств объектов. Свойство (property) – это одна из характеристик объекта (формы, командной кнопки, поля редактирования и т.д.). Свойства, в частности определяют вид, положение и поведение объекта. |
Вкладка Events определяет события, на которые может реагировать объект. Например, щелчок кнопкой мыши – это событие Click, двойной щелчок кнопкой мыши – событие DbClick.
Свойство | Значение | Комментарий |
Caption | Модель движения спутника | Строка текста, идентифицирующая компонент для пользователя |
ClientHeight | 500 | Высота формы |
ClientWidth | 630 | Ширина формы |
BorderStyle | bsSingle | Тонкая граница не позволяет во время работы программы изменить размер окна путем захвата и перемещения границы |
BorderIcons biMaximize | False | В заголовке окна нет кнопки Развернуть |
Color | СlWhite | Описание цвета объекта – белый |
Установим следующие свойства стартовой формы Form
1:
На форму Form
1 добавим следующие компоненты из списка Tool
Palette .
1. Компонент TPaintBox который обеспечивает вывод изображения непосредственно на его поверхности. Установим следующие свойства компонента:
Свойство | Значение | Комментарий |
Width | 500 | Ширина формы |
Height | 500 | Высота формы |
Left | 0 | Отступ левой границы компонента от границы формы |
2. Компонент BitBtn
1,BitBtn
2,BitBtn
3 – это управляющая кнопка, на поверхности которой можно располагать изображение. Изображение на кнопке задается ее свойством Glyph. Оно представляет собой битовую матрицу, содержащую до 4 изображений размером 16 на 16. Расположение изображения и надписи на кнопке определяется свойствами Margin, Layout и Spacing.
Еще одно свойство - это свойство Kind – определяет тип кнопки, по умолчанию равно bkCustom или предустановленный.
Установим следующие свойства компонента
Свойство | Значение | Комментарий |
BitBtn1 | ||
Caption | Пауза | Надпись на кнопке |
Top | 40 | Координата верхнего края компонента |
Kind | bkAbort | Тип кнопки - пауза |
TabOrder | 1 | Очередь в последовательности табуляции |
BitBtn2 | ||
Caption | Пуск | Надпись на кнопке |
Top | 8 | Координата верхнего края компонента |
Kind | bkIgnore | Тип кнопки - пуск |
TabOrder | 0 | При первом появлении формы на экране в фокусе будет этот компонент |
BitBtn 3 | ||
Caption | Выход | Надпись на кнопке |
Top | 72 | Координата верхнего края компонента |
Kind | bkClose | Тип кнопки – выход |
TabOrder | 2 | Очередь в последовательности табуляции |
Cancel | True | Выход из программы с помощью клавиши Esc |
Общие для BitBtn 1, BitBtn 2, BitBtn 3. | ||
Height | 25 | Высота кнопки |
Width | 75 | Ширина кнопки |
Left | 528 | Координата левого края компонента |
3. Компонент Timer – позволяет задавать в приложении интервалы аремении. Таймер имеет два свойства, позволяющие им управлять: Interval = 100 – интервал времени в миллисекундах и Enabled = false – доступность. Таймер точно выдерживает заданные интервалы Interval, если они достаточно велики. Если же задавать интервалы длительностью десятки или единицы миллисекунд, то реальные интервалы времени оказываются заметно больше вследствие различных накладных расходов, связанных с вызовом функции.
Надо еще сказать, что компонент Timer видимый на форме в виде значка при работе программы видим не будет.
В результате выполненных действий нужная нам форма будет выглядеть как показано на рис.2.
Рис.2.
Вербальная постановка задачи
Вид формы подсказывает, как работает разрабатываемая программа. В компоненте TPaintBox я изображу солнце, планету Земля и луну. При нажатии на кнопку Пуск Земля начнет вращаться вокруг солнца, а луна, как естественный спутник Земли начнет вращаться вокруг Земли. При нажатии на кнопку Пауза все вращение должно остановиться. При нажатии на кнопку Выход программа должна закончить свою работу.
ПРОЦЕДУРА ОБРАБОТКИ СОБЫТИЙ
Как я уже сказал, чтоб программа начала работать, надо щелкнуть на кнопке Пуск. Щелчок на изображении командной кнопки – это пример того, что называется событием (Event). Щелчок кнопкой мыши это событие Click. Реакцией на событие должно быть какое-либо действие. В Delphi реакция на событие реализуется как процедура обработки события. Таким образом, для того чтобы программа выполняла некоторую. Работу в ответ на действия пользователя, программист должен написать процедуру обработки соответствующего события. Значительную часть обработки событий берет на себя компонент. Программист должен разрабатывать процедуру обработки события лишь в том случае, если реакция на событие отличается от стандартной или не определена.
Порядок действий при создании процедуры обработки события:
1. Щелчком на изображении компонента в форме – кнопке Выход – выбираем объект, для которого нужно создать процедуру обработки события.
2. После этого в окне Object
Inspector выбираем вкладку Events.
3. На вкладке Events выбираем нужное событие – Click.
4. Выполняем двойной щелчок левой кнопкой мыши в поле, которое находится справа от названия события.
В результате выполненных действий в текст программы будет добавлена процедура обработки события и станет доступным окно редактора кода, в котором можно набирать инструкции процедуры обработки события. Имя процедуры обработки события сгенерирует Delphi, оно будет составное: первая часть имени идентифицирует объект (компонент), вторая – событие. В нашем случае – BitBtn
3
Click
.
В окне редактора кода прописываем следующую инструкцию обработки события:
procedure
TForm
1.
BitBtn
3
Click
(
Sender
:
TObject
); //процедура выхода из программы
begin
;
close
;
Аналогично поступаем с кнопкой Пуск и прописываем следующую инструкцию обработки события. procedure TForm1.BitBtn2Click(Sender: TObject); begin Timer1.Enabled:=true; // Запускается процедура Timer1 BitBtn 2. Visible := true ; // Кнопка Пуск остается видимой для пользователя end ; Аналогично поступаем с кнопкой Пауза и прописываем следующую инструкцию обработки события. procedure TForm1.BitBtn1Click(Sender: TObject); begin Timer1.Enabled:=false; // Выполнение процедуры Timer1 останавлиается BitBtn 2. Visible := true ; // Кнопка Пуск остается видимой для пользователя end ; Для компонента Timer на вкладке Events имеется только одно событие – OnTimer. При двойном щелчке левой кнопкой мыши в поле, которое находится справа от названия события Delphi сгенерирует имя процедуры обработки события – Timer 1 Timer, и в открывшемся окне редактирования кода мы пропишем следующую инструкцию. procedure TForm1.Timer1Timer(Sender: TObject); begin t := t +1; {эта строчка обеспечивает приращение координат движения при каждой итерации процедуры} p 1. Canvas . Brush . Color := clblack ; //цвет космоса черный p 1. Canvas . Rectangle (0,0, p 1. Width , p 1. Height ); //Прорисовка космоса p 1. Canvas . Brush . Color := clyellow ; //Цвет солнца - желтый xSun:=p1.Width div 2; //Координата солнца по x ySun := p 1. Height div 2 ; //Координата солнца по y p1.Canvas.Ellipse(xSun-SunSize,ySun-SunSize,xSun+SunSize,ySun+SunSize); p1.Canvas.Brush.Color:=clSkyBlue; // Цвет Земли - голубой wEarth :=(2* pi )/ Tearth * t ; //Угловая скорость Земли xEarth:=trunc(EarthRadius*cos(wEarth));// Изменение координ . Х при движении по орб. yEarth:=trunc(EEarth*EarthRadius*sin(wEarth));// Измен . коор . Y при движении по орб. p1.Canvas.Ellipse(xSun+xEarth-EarthSize,ySun-yEarth- EarthSize, xSun+xEarth+EarthSize, ySun-yEarth+EarthSize); p1.Canvas.Brush.Color:=cl3Dlight; // цвет спутника Земли – луны wLuna :=(2* pi )/ TLuna * t ; //Угловая скорость луны xLuna := trunc ( LunaRadius * cos ( wLuna )); //Измен. коорд. X при движении по орбите yLuna := trunc ( LunaRadius * sin ( wLuna ));//Измен. коорд. Y при движении по орбите p 1. Canvas . Ellipse ( xSun + xEarth - xLuna - LunaSize , ySun - yEarth - yLuna - LunaSize , xSun+xEarth-xLuna+LunaSize,ySun-yEarth-yLuna+LunaSize); |
end
;
Для компонента TPaintBox на вкладке Events выбираем событие OnPaint. Событие OnPaint наступает, когда приходит сообщение о необходимости перерисовать испорченное изображении. Перерисовку изображения вызывает процедура Timer, поскольку координаты графических объектов изиеняются при каждой итерации процедуры Timer. |
При двойном щелчке левой кнопкой мыши в поле, которое находится справа от названия события Delphi сгенерирует имя процедуры обработки события – P
1
Paint, и в открывшемся окне редактирования кода мы пропишем следующую инструкцию.
procedure
TForm1.P1Paint(Sender: TObject);
begin
t:=0; {
обнуление
переменной
}
p1.Canvas.Brush.Color:=clblack; //
цвет
космоса
черный
p1.Canvas.Rectangle(0,0,p1.Width,p1.Height); //
Прорисовка
космоса
p1.Canvas.Brush.Color:=clyellow; //
Цвет
солнца
-
желтый
xSun:=p1.Width div 2; //Координата солнца по
x
ySun
:=
p
1.
Height
div
2
; //Координата солнца по
y
p1.Canvas.Ellipse(xSun-SunSize,ySun-SunSize,xSun+SunSize,ySun+SunSize);
p1.Canvas.Brush.Color:=clSkyBlue; //
Цвет
Земли
-
голубой
wEarth
:=(2*
pi
)/
Tearth
*
t
; //Угловая скорость Земли
xEarth:=trunc(EarthRadius*cos(wEarth));//
Изменение
координ
.
Х при движении по орб.
yEarth:=trunc(EEarth*EarthRadius*sin(wEarth));//
Измен
.
коор
. Y
при движении по орб.
p1.Canvas.Ellipse(xSun+xEarth-EarthSize,ySun-yEarth- EarthSize,
xSun+xEarth+EarthSize, ySun-yEarth+EarthSize);
p1.Canvas.Brush.Color:=cl3Dlight; //
цвет
спутника
Земли
–
луны
wLuna
:=(2*
pi
)/
TLuna
*
t
; //Угловая скорость луны
xLuna
:=
trunc
(
LunaRadius
*
cos
(
wLuna
)); //Измен. коорд.
X
при движении по орбите
yLuna
:=
trunc
(
LunaRadius
*
sin
(
wLuna
));//Измен. коорд.
Y
при движении по орбите
p
1.
Canvas
.
Ellipse
(
xSun
+
xEarth
-
xLuna
-
LunaSize
,
ySun
-
yEarth
-
yLuna
-
LunaSize
,
xSun+xEarth-xLuna+LunaSize,ySun-yEarth-yLuna+LunaSize);
end
;
Как видно, инструкция процедурыTForm
1.
P
1
Paint полностью совпадает с инструкцией процедурыTForm
1.
Timer
1
Timer за исключением строчки “t
:=0;”. При взаимодействии этих процедур происходит следующее. Процедура Timer вызывает изменение координат графических объектов за счет изменения значения переменной t на единицу, процедура Paint
их прорисовывает и задает их новые координаты как нулевые строчкой t:=0. Через интервал времени Interval = 100 миллисекунд процедура Timer вновь вызывает изменение координат графических объектов, а процедура Paint их заново прорисовывает и т.д. Таким образом создается видимость движения Земли вокруг Солнца и луны вокруг Земли.
Надо еще сказать, что все переменные и константы, используемые в программе надо объявить в соответствующих разделах программы var и const . Далее программа компилируется и если в программе нет синтаксических ошибок, компилятор создает исполняемый файл программы. Имя исполняемого файла такое же, как и у файла проекта, а расширение – exe. Окончательный текст программы |
unit
Unit
1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons, System.ComponentModel;
type
TForm1 = class(TForm)
var
Form1: TForm1;
implementation
{$R *.dfm}
const
SunSize=35; //
радиус
Солнца
EarthSize=11; //
радиус
Земли
EarthRadius=82; //расстояние от Солнца до Земли
TEarth=365.26; //период обращения Земли
LunaSize=4; //радиус Луны
LunaRadius=18; //расстояние от Земли до луны
TLuna=27.32; //период обращения Луны
v
ar
t:integer;
xLuna,yLuna, xSun,ySun,xEarth,yEarth:integer; //координаты
wa
,
wEarth
,
wLuna
:
double
; //угловая скорость
EEarth
:
double
; //эксцентриситет
procedure
TForm1.BitBtn3Click(Sender: TObject);
procedure
TForm1.BitBtn2Click(Sender: TObject);
procedure
TForm1.BitBtn1Click(Sender: TObject);
procedure
TForm1.Timer1Timer(Sender: TObject);
procedure
TForm1.P1Paint(Sender: TObject);
procedure
TForm1.FormActivate(Sender: TObject);
end
.
ПРИЛОЖЕНИЕ 1. Содержимое диска. Project.exe – исполняемый файл. Project1.dpr – главный модуль Project1.bdsproj – файл проекта. Unit1.pas – файл модуля |
Курсовой проект.doc – документ MS Word
СПИСОК ЛИТЕРАТУРЫ
1. Архангельский А.Я. Программирование в Delphi. Учебник по классическим версиям – М.: ООО «Бином-Пресс»,
2. Культин Н.Б. Основы программирования в Delphi. Самоучитель.–СПб.: БХВ-Петербург, 2004 – 400 с.
3. Архангельский А.Я. Delphi 7. Справочное пособие –М.: ООО «Бином-Пресс»,