Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторные работы3 / KG3 / complex
.cpp//---------------------------------------------------------------------------
#pragma hdrstop
#include "complex.h"
Tcomplex::Tcomplex (TCanvas* tempc)
{
canva=tempc;
isExistCrossPoint=false;
}
void Tcomplex::setParams(float oX, float oY, float temp_lengthos)
{
O.x=oX;
O.y=oY;
lengthOS=temp_lengthos;
//Устанавливаем координаты точек
A.x = 0;
A.y = 80;
A.z = 0;
B.x = 50;
B.y = 0;
B.z = 0;
C.x = 0;
C.y = 0;
C.z = 50;
M.x = 0;
M.y = 60;
M.z = 0;
N.x = 60;
N.y = 0;
N.z = 0;
}
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->Width = 1;
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;
canva->Pen->Width = 2;
canva->Pen->Color = (TColor)RGB(21, 183, 70);
//Рисуем линию из A1 в B1
canva->MoveTo(O.x-A.x, O.y+A.y);
canva->LineTo(O.x-B.x, O.y+B.y);
//Рисуем линию из B1 в C1
canva->MoveTo(O.x-B.x, O.y+B.y);
canva->LineTo(O.x-C.x, O.y+C.y);
//Рисуем линию из A1 в C1
canva->MoveTo(O.x-A.x, O.y+A.y);
canva->LineTo(O.x-C.x, O.y+C.y);
canva->Ellipse(O.x-A.x-3, O.y+A.y-3, O.x-A.x+3, O.y+A.y+3);
//Подписываем точку А1
canva->TextOutA(O.x-A.x+5, O.y+A.y-18, "А1");
canva->Ellipse(O.x-B.x-3, O.y+B.y-3, O.x-B.x+3, O.y+B.y+3);
//Подписываем точку B1
canva->TextOutA(O.x-B.x+5, O.y+B.y-18, "B1");
canva->Ellipse(O.x-C.x-3, O.y+C.y-3, O.x-C.x+3, O.y+C.y+3);
//Подписываем точку C1
canva->TextOutA(O.x-C.x+5, O.y+C.y-18, "C1");
//Рисуем линию из A2 в B2
canva->MoveTo(O.x-A.x, O.y-A.z);
canva->LineTo(O.x-B.x, O.y-B.z);
//Рисуем линию из B2 в C2
canva->MoveTo(O.x-B.x, O.y-B.z);
canva->LineTo(O.x-C.x, O.y-C.z);
//Рисуем линию из A2 в C2
canva->MoveTo(O.x-A.x, O.y-A.z);
canva->LineTo(O.x-C.x, O.y-C.z);
canva->Ellipse(O.x-A.x-3, O.y-A.z-3, O.x-A.x+3, O.y-A.z+3);
//Подписываем точку А2
canva->TextOutA(O.x-A.x+5, O.y-A.z-18, "А2");
canva->Ellipse(O.x-B.x-3, O.y-B.z-3, O.x-B.x+3, O.y-B.z+3);
//Подписываем точку B2
canva->TextOutA(O.x-B.x+5, O.y-B.z-18, "B2");
canva->Ellipse(O.x-C.x-3, O.y-C.z-3, O.x-C.x+3, O.y-C.z+3);
//Подписываем точку C2
canva->TextOutA(O.x-C.x+5, O.y-C.z-18, "C2");
canva->Pen->Color = (TColor)RGB(207, 22, 46);
//Рисуем линию из M1 в N1
canva->MoveTo(O.x-M.x, O.y+M.y);
canva->LineTo(O.x-N.x, O.y+N.y);
canva->Ellipse(O.x-M.x-3, O.y+M.y-3, O.x-M.x+3, O.y+M.y+3);
//Подписываем точку M1
canva->TextOutA(O.x-M.x+5, O.y+M.y-18, "M1");
canva->Ellipse(O.x-N.x-3, O.y+N.y-3, O.x-N.x+3, O.y+N.y+3);
//Подписываем точку N1
canva->TextOutA(O.x-N.x+5, O.y+N.y-18, "N1");
//Рисуем линию из M2 в N2
canva->MoveTo(O.x-M.x, O.y-M.z);
canva->LineTo(O.x-N.x, O.y-N.z);
canva->Ellipse(O.x-M.x-3, O.y-M.z-3, O.x-M.x+3, O.y-M.z+3);
//Подписываем точку M2
canva->TextOutA(O.x-M.x+5, O.y-M.z-18, "M2");
canva->Ellipse(O.x-N.x-3, O.y-N.z-3, O.x-N.x+3, O.y-N.z+3);
//Подписываем точку N2
canva->TextOutA(O.x-N.x+5, O.y-N.z-18, "N2");
if (isExistCrossPoint)
{
canva->Ellipse(O.x-TReal.x-3, O.y+TReal.y-3, O.x-TReal.x+3, O.y+TReal.y+3);
//Подписываем точку T1
canva->TextOutA(O.x-TReal.x+5, O.y+TReal.y-18, "T1");
canva->Ellipse(O.x-TReal.x-3, O.y-TReal.z-3, O.x-TReal.x+3, O.y-TReal.z+3);
//Подписываем точку T2
canva->TextOutA(O.x-TReal.x+5, O.y-TReal.z-18, "T2");
}
}
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();
}
void Tcomplex::setA(int valueX, int valueY, int valueZ)
{
A.x = valueX;
A.y = valueY;
A.z = valueZ;
}
void Tcomplex::setB(int valueX, int valueY, int valueZ)
{
B.x = valueX;
B.y = valueY;
B.z = valueZ;
}
void Tcomplex::setC(int valueX, int valueY, int valueZ)
{
C.x = valueX;
C.y = valueY;
C.z = valueZ;
}
void Tcomplex::setN(int valueX, int valueY, int valueZ)
{
N.x = valueX;
N.y = valueY;
N.z = valueZ;
}
void Tcomplex::setM(int valueX, int valueY, int valueZ)
{
M.x = valueX;
M.y = valueY;
M.z = valueZ;
}
//---------------------------------------------------------------------------
#pragma package(smart_init)