Модель движения спутника вокруг планеты

Автор работы: Пользователь скрыл имя, 28 Декабря 2010 в 23:17, Не определен

Описание работы

Введение
Описание программы
Вербальная постановка задачи
Процедура обработки событий
Окончательный текст программы
Приложение 1. Содержимое диска
Список литературы

Файлы: 1 файл

КУРСАВАЯ РАБОТА ПО ИНФОРМАТИКЕ СТУДЕНТА МСФ-2 КУРС.docx

— 319.94 Кб (Скачать файл)

  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:=p1.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 при движении по орбите

  p1.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 сгенерирует имя процедуры обработки события – P1Paint, и в открывшемся окне редактирования кода мы пропишем следующую инструкцию.

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:=p1.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 при движении по орбите

  p1.Canvas.Ellipse(xSun+xEarth-xLuna-LunaSize,ySun-yEarth-yLuna- LunaSize,

                                              xSun+xEarth-xLuna+LunaSize,ySun-yEarth-yLuna+LunaSize);

end;

Как видно,  инструкция процедуры TForm1.P1Paint  полностью совпадает с инструкцией процедуры TForm1.Timer1Timer  за исключением строчки “t:=0;”. При взаимодействии этих процедур происходит следующее. Процедура Timer вызывает изменение координат графических объектов за счет изменения значения переменной t на единицу, процедура Paint их прорисовывает и задает их новые координаты как нулевые строчкой t:=0. Через интервал времени Interval = 100 миллисекунд процедура Timer вновь вызывает изменение координат графических объектов, а процедура Paint их заново прорисовывает и т.д. Таким образом создается видимость движения Земли вокруг Солнца и луны вокруг Земли. 

     Надо  еще сказать, что все переменные и константы, используемые в программе  надо объявить в соответствующих  разделах программы var и const. Далее программа компилируется и если в программе нет синтаксических ошибок, компилятор создает исполняемый файл программы. Имя исполняемого файла такое же, как и у файла проекта, а расширение – exe.

     Окончательный текст программы

unit Unit1; 

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;      //период обращения Луны 

var  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. Учебник по классическим версиям – М.: ООО «Бином-Пресс», 2006 г. – 400 с.
    2. Культин Н.Б. Основы программирования в Delphi. Самоучитель.–СПб.: БХВ-Петербург, 2004 – 400 с.
    3. Архангельский А.Я. Delphi 7. Справочное пособие –М.: ООО «Бином-Пресс», 2004 г. – 1024 с.

Информация о работе Модель движения спутника вокруг планеты