Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
56
Добавлен:
02.05.2014
Размер:
3.18 Кб
Скачать
//---------------------------------------------------------------------------


#pragma hdrstop

#include "complex.h"

Tcomplex::Tcomplex (TCanvas* tempc)
{
	canva=tempc;
}

void Tcomplex::setParams(float oX, float oY, float temp_lengthos)
{
	O.x=oX;
	O.y=oY;
	lengthOS=temp_lengthos;
}

void Tcomplex::calculate()
{
	XBegin.x=-lengthOS;
	XBegin.y=0;
	XBegin.z=0;

	XEnd.x=lengthOS;
	XEnd.y=0;
	XEnd.z=0;

	ZBegin.x=0;
	ZBegin.y=-lengthOS;
	ZBegin.z=0;

	ZEnd.x=0;
	ZEnd.y=lengthOS;
	ZEnd.z=0;

	P1.x=O.x-P.x;
	P1.y=O.y+P.y;

	P2.x=O.x-P.x;
	P2.y=O.y-P.z;

	P3.x=O.x+P.y;
	P3.y=O.y-P.z;

	C1.x=O.x-C.x;
	C1.y=O.y+C.y;

	C2.x=O.x-C.x;
	C2.y=O.y-C.z;

	C3.x=O.x+C.y;
	C3.y=O.y-C.z;
}

point2D Tcomplex::convert (point3D point)
{
	point2D tempPoint;
	tempPoint.x = O.x - point.x;
	tempPoint.y = O.y - point.y;
	return tempPoint;
}

void Tcomplex::draw()
{
	//Зачистим область
	canva->Brush->Color=clWhite;
	TRect r;
	r.Left = 0;
	r.Top = 0;
	r.Right = O.x*2;
	r.Bottom = O.y*2;
	canva->FillRect(r);

	//Оси   
	canva->Pen->Color=clGreen;
	canva->MoveTo(convert(XBegin).x, convert(XBegin).y);
	canva->LineTo(O.x, O.y);
	canva->Pen->Color=clBlue;
	canva->LineTo(convert(XEnd).x, convert(XEnd).y);

	canva->Pen->Color=clGreen;
	canva->MoveTo(convert(ZBegin).x, convert(ZBegin).y);
	canva->LineTo(O.x, O.y);
	canva->Pen->Color=clRed;
	canva->LineTo(convert(ZEnd).x, convert(ZEnd).y);
	canva->Pen->Color=clBlack;

	//Линии проекции Pi
	canva->MoveTo(P1.x, P1.y);
	canva->LineTo(P2.x, P2.y);
	canva->LineTo(P3.x, P3.y);
	canva->LineTo(P3.x, O.y);
	canva->LineTo(O.x, P1.y);
	canva->LineTo(P1.x, P1.y);

	//Точки Pi
	canva->Brush->Color=clInactiveCaption;
	canva->Ellipse(P1.x-radius, P1.y-radius,P1.x+radius, P1.y+radius);
	canva->Ellipse(P2.x-radius, P2.y-radius,P2.x+radius, P2.y+radius);
	canva->Ellipse(P3.x-radius, P3.y-radius,P3.x+radius, P3.y+radius);
	canva->Brush->Color=clWhite;

	canva->TextOutA(P1.x+indentx, P1.y-indenty, "P1");
	canva->TextOutA(P2.x+indentx, P2.y-indenty, "P2");
	canva->TextOutA(P3.x+indentx, P3.y-indenty, "P3");

	//Линии проекции Ci
	canva->MoveTo(C1.x, C1.y);
	canva->LineTo(C2.x, C2.y);
	canva->LineTo(C3.x, C3.y);
	canva->LineTo(C3.x, O.y);
	canva->LineTo(O.x, C1.y);
	canva->LineTo(C1.x, C1.y);

	//Точки Ci
	canva->Brush->Color=clInactiveCaption;
	canva->Ellipse(C1.x-radius, C1.y-radius,C1.x+radius, C1.y+radius);
	canva->Ellipse(C2.x-radius, C2.y-radius,C2.x+radius, C2.y+radius);
	canva->Ellipse(C3.x-radius, C3.y-radius,C3.x+radius, C3.y+radius);
	canva->Brush->Color=clWhite;

	canva->TextOutA(C1.x+indentx, C1.y-indenty, "C1");
	canva->TextOutA(C2.x+indentx, C2.y-indenty, "C2");
	canva->TextOutA(C3.x+indentx, C3.y-indenty, "C3");

}

void Tcomplex::change()
{
	 P.x=Form1->TrackBar1->Position;
	 P.y=Form1->TrackBar2->Position;
	 P.z=Form1->TrackBar3->Position;

	 C.x=Form1->TrackBar4->Position;
	 C.y=Form1->TrackBar5->Position;
	 C.z=Form1->TrackBar6->Position;

	 calculate();
	 draw();
}
//---------------------------------------------------------------------------

#pragma package(smart_init)
Соседние файлы в папке KG2