Добавил:
korayakov
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабы / Тельминов / набор_2 / LABA4 / complex laba4 / Unit2
.cpp//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit2.h"
#include <math.h>
#include <Math.hpp>
//---------------------------------------------------------------------------
#pragma package(smart_init)
//Конструктор
Complex::Complex(double R,double I,double xz,double yz,int numb,TImage* _Img)
{
Re=R; Im=I;
Img=_Img;
num=numb;
}
//---------------------------------------------------------------------------
Complex Complex::operator + (Complex X)
{ Complex R(0,0,0,0,0,Img);
R.Re=Re + X.Re;
R.Im=Im + X.Im;
return R;
}
//---------------------------------------------------------------------------
Complex Complex::operator - ( Complex &X)
{
Complex R(0,0,0,0,0,Img);
R.Re=Re - X.Re;
R.Im=Im - X.Im;
return R;
}
//---------------------------------------------------------------------------
Complex & Complex::operator=(const Complex &R)
{
Re=R.Re;
Im=R.Im;
//m=R.num;
return *this;
}
//---------------------------------------------------------------------------
Complex Complex::operator*(const Complex &X) const
{
Complex R(0,0,0,0,0,Img);
R.Re=Re*X.Re-Im*X.Im;
R.Im=Re*X.Im+Im*X.Re;
return R;
}
//---------------------------------------------------------------------------
Complex Complex::operator /(const Complex &X) const
{
Complex R(2,3,0,0,0,Img);
R.Re=(Re*X.Re+Im*X.Im)/(Re*Re+Im*Im);
R.Im=(-Re*X.Im+Im*X.Re)/(Re*Re+Im*Im);
return R;
}
//---------------------------------------------------------------------------
void Complex::Rotate( double angle)
{double l=sqrt(Re*Re+Im*Im);
double ugol=ArcTan2(Im,Re);
Re=floor(10*l*cos(DegToRad(angle)+ugol))/10;
Im=floor(10*l*sin(DegToRad(angle)+ugol))/10;
}
//---------------------------------------------------------------------------
void Complex::Draw(int m)
{
Img->Canvas->Pen->Width=2;
Img->Canvas->Pen->Color=clRed;
Img->Canvas->MoveTo(Img->Width/2,Img->Height/2);
Img->Canvas->LineTo(Img->Width/2+Re*m,Img->Height/2-Im*m);
}
//---------------------------------------------------------------------------
void Complex::ReDraw(int m)
{
Img->Canvas->Pen->Width=2;
Img->Canvas->Pen->Color=clWhite;
Img->Canvas->MoveTo(Img->Width/2,Img->Height/2);
Img->Canvas->LineTo(Img->Width/2+Re*m,Img->Height/2-Im*m);
}
//=-----------------------------------------------------------------------------