Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
22
Добавлен:
17.04.2013
Размер:
53.76 Кб
Скачать

Московский институт электронной техники.

(Технический университет)

Пояснительная записка к курсовой по ОВП.

Тема: Моделирование работы радара.

Выполнил:

Принял:

Москва

2001

Задание.

Имитировать работу радара, отслеживая движение двух самолетов. Отображать фигурки самолетов только когда имитированная эл. волна направлена на самолет.

Выполнение задания.

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

Описание функций программы.

__fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner)

Функция инициализирует начальные параметры. Устанавливаются начальные координаты самолетов, их отклонение от оси абсцисс, скорость и направление движения. Установленные параметры выводятся на экран в соответствующие поля.

int Classify(int sx,int sy,int kx,int ky,int px,int py)

Функция определяет положение точки относительно отрезка и возвращает значение 1 или 0, которые соответствуют положению точки справа или слева относительно отрезка.

void __fastcall TForm1::Timer1Timer(TObject *Sender)

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

void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)

Функция вызывается при завершении работы программы. В ней выключается таймер.

void __fastcall TForm1::Edit1Change(TObject *Sender)

Функция вызывается когда пользователь изменяет значение в поле с частотой обращения луча радара.

void __fastcall TForm1::Edit2Change(TObject *Sender)

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

void __fastcall TForm1::Edit4Change(TObject *Sender)

Функция вызывается когда пользователь изменяет значение в поле со скоростью первого самолета.

void __fastcall TForm1::Edit3Change(TObject *Sender)

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

void __fastcall TForm1::Edit5Change(TObject *Sender)

Функция вызывается когда пользователь изменяет значение в поле со скоростью второго самолета.

Описание структуры Samolet

struct Samolet

{

float kx,Speed;

float Xpos,Ypos,sx,sy;

int TX,TY,count;

void move()

{

Xpos+=sx*Speed*cos(kx*0.01745);

Ypos+=sy*Speed*sin(kx*0.01745);

}

}Sam[2];

В структуре Samolet содержатся переменные значения которых характеризуют параметры движения и положения самолета на экране.

Функция Move осуществляет изменение положения самолета в соответствии с параметрами движения.

Листинг программы.

Файл Project1.cpp

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

USERES("Project1.res");

USEFORM("Unit1.cpp", Form1);

//---------------------------------------------------------------------------

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)

{

try

{

Application->Initialize();

Application->CreateForm(__classid(TForm1), &Form1);

Application->Run();

}

catch (Exception &exception)

{

Application->ShowException(&exception);

}

return 0;

}

//---------------------------------------------------------------------------

Файл Unit1.h

//---------------------------------------------------------------------------

#ifndef Unit1H

#define Unit1H

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <ExtCtrls.hpp>

//---------------------------------------------------------------------------

class TForm1 : public TForm

{

__published: // IDE-managed Components

TBevel *Bevel1;

TBevel *Bevel2;

TImage *Image1;

TTimer *Timer1;

TLabel *Label1;

TEdit *Edit1;

TBevel *Bevel3;

TBevel *Bevel4;

TBevel *Bevel5;

TLabel *Label2;

TLabel *Label3;

TLabel *Label4;

TLabel *Label5;

TEdit *Edit2;

TEdit *Edit3;

TLabel *Label6;

TLabel *Label7;

TEdit *Edit4;

TEdit *Edit5;

TLabel *Label8;

TEdit *Edit6;

TLabel *Label9;

TEdit *Edit7;

TLabel *Label10;

TEdit *Edit8;

TLabel *Label11;

TEdit *Edit9;

void __fastcall Timer1Timer(TObject *Sender);

void __fastcall FormClose(TObject *Sender, TCloseAction &Action);

void __fastcall Edit1Change(TObject *Sender);

void __fastcall Edit2Change(TObject *Sender);

void __fastcall Edit4Change(TObject *Sender);

void __fastcall Edit3Change(TObject *Sender);

void __fastcall Edit5Change(TObject *Sender);

private: // User declarations

int X,Y,oldX,oldY;

int Angle;

float SIN[360],COS[360];

struct Samolet

{

float kx,Speed;

float Xpos,Ypos,sx,sy;

int TX,TY,count;

void move()

{

Xpos+=sx*Speed*cos(kx*0.01745);

Ypos+=sy*Speed*sin(kx*0.01745);

}

}Sam[2];

public: // User declarations

__fastcall TForm1(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TForm1 *Form1;

//---------------------------------------------------------------------------

#endif

Файл Unit1.cpp

//---------------------------------------------------------------------------

#include <vcl.h>

#include<stdlib.h>

#include<stdio.h>

#include<math.h>

#pragma hdrstop

#define RIGHT 1

#define LEFT 0

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

char buf[100];

int Speed = 1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner)

{

X = Image1->Width/2;

Y = 0;

Angle = 0;

for(int i = 0;i < 360;i++)

{

SIN[i] = sin(i*0.01745);

COS[i] = cos(i*0.01745);

SIN[i] = Image1->Height/2*(SIN[i] + 1);

COS[i] = Image1->Width/2*(COS[i] + 1);

}

Sam[0].kx = 35;

Sam[0].Speed = 0.3;

Sam[0].sx = 1;

Sam[0].sy = 1;

Sam[0].Xpos = 100;

Sam[0].Ypos = 100;

Sam[1].kx = 75;

Sam[1].Speed = 0.5;

Sam[1].sx = 1;

Sam[1].sy = 1;

Sam[1].Xpos = 100;

Sam[1].Ypos = 10;

sprintf(buf,"%d",Speed);

Edit1->Text = buf;

sprintf(buf,"%f",Sam[0].kx);

Edit2->Text = buf;

sprintf(buf,"%f",Sam[0].Speed);

Edit4->Text = buf;

sprintf(buf,"%f",Sam[0].Xpos);

Edit7->Text = buf;

sprintf(buf,"%f",Sam[0].Ypos);

Edit9->Text = buf;

sprintf(buf,"%f",Sam[1].kx);

Edit3->Text = buf;

sprintf(buf,"%f",Sam[1].Speed);

Edit5->Text = buf;

sprintf(buf,"%f",Sam[1].Xpos);

Edit6->Text = buf;

sprintf(buf,"%f",Sam[1].Ypos);

Edit8->Text = buf;

}

//---------------------------------------------------------------------------

Соседние файлы в папке KursachMP33 Copy
  • #
    17.04.20132.03 Кб17Unit1.h
  • #
    17.04.201357.21 Кб15Unit1.obj
  • #
    17.04.20135.71 Кб15Unit1.~cp
  • #
    17.04.20132.52 Кб15Unit1.~df
  • #
    17.04.20132.06 Кб15Unit1.~h
  • #
    17.04.201353.76 Кб22Zapiska5.doc