Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
5
Добавлен:
01.05.2014
Размер:
1.87 Кб
Скачать
#include "StdAfx.h"
#include ".\cpoverhnost.h"
#include "cParabSpline.h"
#include "cVector3D.h"
#include <math.h>

cPoverhnost::cPoverhnost(void)
: Parab1(NULL)
, Parab2(NULL)
{
	int i=0;
	i++;
}

cPoverhnost::~cPoverhnost(void)
{
	if(Parab1 != NULL)
		delete Parab1;
	if (Parab2 != NULL)
		delete Parab2;
}

int cPoverhnost::CreateParab(void)
{
	this->Parab1 = new cParabSpline(P11, P12, P13);
	this->Parab2 = new cParabSpline(P21, P22, P23);
	return 0;
}

int cPoverhnost::GetPoint(float X, float Y, cVector3D& RezVect)
{
	float T11, T13, T21, T23;
	float CurX1, CurX2;
	cVector3D Tmp1, Tmp2;

	T11 = Parab1->GetT1();
	T13 = Parab1->GetT3();
	T21 = Parab2->GetT1();
	T23 = Parab2->GetT3();

	CurX1 = (T13-T11)*X + T11;
	CurX2 = (T23-T21)*X + T21;

	Tmp1 = Parab1->GetGSK(CurX1);
	Tmp2 = Parab2->GetGSK(CurX2);

	RezVect.X = Tmp2.X*(1-Y) + Tmp1.X*Y;
	RezVect.Y = Tmp2.Y*(1-Y) + Tmp1.Y*Y;
	RezVect.Z = Tmp2.Z*(1-Y) + Tmp1.Z*Y;

	return 0;
}

int cPoverhnost::Rotate(float Ugol)
{
	delete Parab1;
	delete Parab2;
	float ty, tz;

	Ugol = (Ugol*(float)3.14159265358979323846)/180;

	// Change point P11, P12, P13, P21, P22, P23
	ty = P11.Y;
	tz = P11.Z;
	P11.Y = cos(Ugol)*ty + sin(Ugol)*tz;
	P11.Z= -sin(Ugol)*ty + cos(Ugol)*tz;
	ty = P12.Y;
	tz = P12.Z;
	P12.Y = cos(Ugol)*ty + sin(Ugol)*tz;
	P12.Z= -sin(Ugol)*ty + cos(Ugol)*tz;
	ty = P13.Y;
	tz = P13.Z;
	P13.Y = cos(Ugol)*ty + sin(Ugol)*tz;
	P13.Z= -sin(Ugol)*ty + cos(Ugol)*tz;
	ty = P21.Y;
	tz = P21.Z;
	P21.Y = cos(Ugol)*ty + sin(Ugol)*tz;
	P21.Z= -sin(Ugol)*ty + cos(Ugol)*tz;
	ty = P22.Y;
	tz = P22.Z;
	P22.Y = cos(Ugol)*ty + sin(Ugol)*tz;
	P22.Z= -sin(Ugol)*ty + cos(Ugol)*tz;
	ty = P23.Y;
	tz = P23.Z;
	P23.Y = cos(Ugol)*ty + sin(Ugol)*tz;
	P23.Z= -sin(Ugol)*ty + cos(Ugol)*tz;

	this->CreateParab();

	return 0;
}
Соседние файлы в папке Laba4