Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторные работы3 / KG2 / complex
.cpp//---------------------------------------------------------------------------
#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)