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

ООП / Lab4 / Lab4 / Unit2

.cpp
Скачиваний:
12
Добавлен:
18.02.2017
Размер:
2.55 Кб
Скачать
//---------------------------------------------------------------------------


#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)
Соседние файлы в папке Lab4