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

Лабы / С++Builder / Laba3 / Task1 / Ball

.cpp
Скачиваний:
12
Добавлен:
17.04.2013
Размер:
1.71 Кб
Скачать
//---------------------------------------------------------------------------
#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);
}
Соседние файлы в папке Task1