Добавил:
sergey123
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
//---------------------------------------------------------------------------
#pragma hdrstop
#include "Unit2.h"
#include <math.h>
#define pi 3.14
double round (double x, int precision)
{
int mul = 10;
for (int i = 0; i < precision; i++)
mul *= mul;
if (x > 0)
return floor(x * mul + .5) / mul;
else
return ceil(x * mul - .5) / mul;
}
complex :: complex (double a,double b,TImage *Image1){
mark = false;
Img = Image1;
Re = a;
Im = b;
R = sqrt(a*a + b*b);
Phi = atan(Im/Re);
phi = Phi*180/pi;
}
complex :: complex (double a,int b,TImage *Image1){
mark = false;
Img = Image1;
R = a;
phi = b;
Phi = (b*pi) / 180.0;
Re = R * cos(Phi);
Im = R * sin(Phi);
}
complex :: complex(complex* a){
Img = a->Img;
mark = a->mark;
Re = a->Re;
Im = a->Im;
Phi = a->Phi;
phi = a->phi;
R = a->R;
}
void complex :: Rotate(int phi1){
phi+=phi1;
Phi += (phi1*pi) / 180;
Re = R * cos(Phi);
Im = R * sin(Phi);
}
void complex :: Draw(){
//
Img->Canvas->Pen->Width = 2;
Img->Canvas->Brush->Style = bsClear;
if(mark == false)
Img->Canvas->Pen->Color = clPurple;
else
Img->Canvas->Pen->Color = clBlue;
Img->Canvas->MoveTo(300,300);
Img->Canvas->LineTo(300+Re*10,300-Im*10);
Img->Canvas->Ellipse(300+Re*10-3,300-Im*10-3,300+Re*10+3,300-Im*10+3);
Img->Canvas->TextOutA(300+Re*10,300-Im*10,FloatToStr(Re)+"+("+FloatToStr(Im)+")*i");
}
void complex :: Mark(){
if(mark == true)
mark = false;
else
mark = true;
}
complex complex :: operator = (complex* a){
mark = a->mark;
Re = a->Re;
Im = a->Im;
phi = a->phi;
Phi = a->Phi;
R = a->R;
return *this;
}
complex complex :: operator +(complex* a){
complex dat(a);
dat.Im = Im + a->Im;
dat.Re = Re + a->Re;
dat.R = sqrt(dat.Im*dat.Im + dat.Re*dat.Re);
dat.Phi = atan(dat.Im/dat.Re);
dat.phi = dat.Phi*180/pi;
return dat;
}
complex complex :: operator -(complex* a){
complex dat(a);
dat.Im = Im - a->Im;
dat.Re = Re - a->Re;
dat.R = sqrt(dat.Im*dat.Im + dat.Re*dat.Re);
dat.Phi = atan(dat.Im/dat.Re);
dat.phi = dat.Phi*180/pi;
return dat;
}
complex complex :: operator *(complex* a){
complex dat(a);
dat.Im = Re * a->Re + Im * a->Im;
dat.Re = Re * a->Re - Im * a->Im;
dat.R = sqrt(dat.Im*dat.Im + dat.Re*dat.Re);
dat.Phi = atan(dat.Im/dat.Re);
dat.phi = dat.Phi*180/pi;
return dat;
}
//---------------------------------------------------------------------------
#pragma package(smart_init)