Добавил:
korayakov
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабы / С++Builder / Laba3 / Task1 / Ball
.cpp//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Ball.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
CSupport::CSupport(TImage* _Img)
{
Img=_Img;
xc=(Img->Width) /2;
yc=(Img->Height)/2;
x1=x2=xc;
y1=y2=yc;
len2= 100;
len1=200;
angle=0.1;
Rotate(0);
}
void CSupport::Hide()
{
double a=len1,b=len2;
for (double ss=0;ss<3;ss+=3.14159/2)
{
double r=a*b/sqrt(b*b*cos(0)*cos(0)+a*a*sin(0)*sin(0));
x1=r*cos(angle+ss);
y1=r*sin(angle+ss);
for (double t=0.1;t<2*3.24159;t+=0.1)
{
r=a*b/sqrt(b*b*cos(t)*cos(t)+a*a*sin(t)*sin(t));
x2=r*cos(angle+ss+t);
y2=r*sin(angle+ss+t);
Img->Canvas->Pen->Width=3;
Img->Canvas->Pen->Color = clWhite;
Img->Canvas->MoveTo(xc+x1,yc+y1);
Img->Canvas->LineTo(xc+x2,yc+y2);
Img->Canvas->Pen->Width=1;
x1=x2;
y1=y2;
}
}
}
void CSupport::Rotate(double dA)
{
angle=angle+dA;
double a=len1,b=len2;
for (double ss=0;ss<3;ss+=3.14159/2)
{
double r=a*b/sqrt(b*b*cos(0)*cos(0)+a*a*sin(0)*sin(0));
x1=r*cos(angle+0+ss);
y1=r*sin(angle+0+ss);
for (double t=0.1;t<2*3.24159;t+=0.1)
{
r=a*b/sqrt(b*b*cos(t)*cos(t)+a*a*sin(t)*sin(t));
x2=r*cos(angle+t+ss);
y2=r*sin(angle+t+ss);
Img->Canvas->Pen->Width=3;
Img->Canvas->Pen->Color = clRed;
Img->Canvas->Brush->Color = clRed;
Img->Canvas->MoveTo(xc+x1,yc+y1);
Img->Canvas->LineTo(xc+x2,yc+y2);
Img->Canvas->Pen->Width=1;
x1=x2;
y1=y2;
}
}
}
int CSupport::ComputeBallY(int x)
{
if ((x<x1) || (x>x2)) throw Naklon();
return yc+(y1-yc)*(xc-x)/(xc-x1);
}