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


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