Добавил:
korayakov
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Курсовые / 1 / RADAR / KursachMP33 Copy / 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;
int oldspeed=1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner)
{
X = 156;
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] = 156*(SIN[i] + 1);
COS[i] = 156*(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[0].count = 0;
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;
Sam[1].count = 0;
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;
}
//---------------------------------------------------------------------------
int Classify(int sx,int sy,int kx,int ky,int px,int py)
{
int tx,ty,Tpx,Tpy;
tx = kx - sx;
ty = ky - sy;
Tpx = px - sx;
Tpy = py - sy;
float s = tx*Tpy-ty*Tpx;
if(s > 0.0)return LEFT;
if(s < 0.0)return RIGHT;
return 0;
}
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
int a,b,i;
int cx=312/2,cy=312/2;
int R=cx,smx,smy,smr;
TRect r;
r.top = 0;
r.left = 0;
r.right = 313;
r.bottom = 313;
Image1->Canvas->Brush->Color = clBlack;
Image1->Canvas->Pen->Color = clLime;
Image1->Canvas->FillRect(r);
Image1->Canvas->Ellipse(1, 1, 312, 312);
Image1->Canvas->Ellipse(78, 78, 235, 235);
Image1->Canvas->MoveTo(156,0);
Image1->Canvas->LineTo(156,313);
Image1->Canvas->MoveTo(0,313/2);
Image1->Canvas->LineTo(313,156);
Image1->Canvas->MoveTo(156,156);
for(i = 0;i <= 21;i++)
{
Image1->Canvas->MoveTo(151,i*313/20);
Image1->Canvas->LineTo(161,i*313/20);
Image1->Canvas->MoveTo(i*313/20,151);
Image1->Canvas->LineTo(i*313/20,161);
}
X = COS[Angle];
Y = SIN[Angle];
Image1->Canvas->MoveTo(156,156);
Image1->Canvas->LineTo(X,Y);
for(int i = 0;i < 2;i++)
{
Sam[i].move();
if(Sam[i].Xpos > 313 || Sam[i].Xpos < 0)
Sam[i].sx = -Sam[i].sx;
if(Sam[i].Ypos > 313 || Sam[i].Ypos < 0)
Sam[i].sy = -Sam[i].sy;
Image1->Canvas->Pixels[Sam[i].Xpos][Sam[i].Ypos] = clRed;
a = Classify(156,156,X,Y,Sam[i].Xpos,Sam[i].Ypos);
b = Classify(156,156,oldX,oldY,Sam[i].Xpos,Sam[i].Ypos);
if(a == RIGHT && b == LEFT)
{
Sam[i].TX = Sam[i].Xpos;
Sam[i].TY = Sam[i].Ypos;
Sam[i].count = 100;
}
if(Sam[i].count!=0)
{
Sam[i].count--;
smx = Sam[i].Xpos;
smy = Sam[i].Ypos;
smr = sqrt((cx-smx)*(cx-smx)+(cy-smy)*(cy-smy));
if (R>(smr+5))
Image1->Canvas->Ellipse(Sam[i].TX,Sam[i].TY,//
Sam[i].TX+Sam[i].count/10,Sam[i].TY+Sam[i].count/10);
}
}
oldX = X;
oldY = Y;
Angle+=5;
if(Angle >= 360)Angle = 0;
sprintf(buf,"%f",Sam[1].Xpos);
Edit6->Text = buf;
sprintf(buf,"%f",Sam[1].Ypos);
Edit8->Text = buf;
sprintf(buf,"%f",Sam[0].Xpos);
Edit7->Text = buf;
sprintf(buf,"%f",Sam[0].Ypos);
Edit9->Text = buf;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
Timer1->Enabled = false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit1Change(TObject *Sender)
{
int k;
if (Edit1->Text== "") Speed=oldspeed;
else
Speed = StrToInt(Edit1->Text);
if(Speed < 0 || Speed > 10) Edit1->Text = "";
else
{
if (Edit1->Text=="") k = oldspeed;
else
{
k = StrToInt(Edit1->Text);
Speed = StrToInt(Edit1->Text);
}
Timer1->Interval = (Speed*1000*k)/360;
oldspeed=k;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit2Change(TObject *Sender)
{
Sam[0].kx = atof(Edit2->Text.c_str());
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit4Change(TObject *Sender)
{
Sam[0].Speed = atof(Edit4->Text.c_str());
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit3Change(TObject *Sender)
{
Sam[1].kx = atof(Edit3->Text.c_str());
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit5Change(TObject *Sender)
{
Sam[1].Speed = atof(Edit5->Text.c_str());
}
//---------------------------------------------------------------------------
Соседние файлы в папке KursachMP33 Copy