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

cParabSpline::cParabSpline(void)
: T1(0)
, T3(0)
, P0(0)
, a(0)
, b(0)
, c(0)
, P1()
, P2()
, P3()
{
}

cParabSpline::~cParabSpline(void)
{
}

cParabSpline::cParabSpline(cVector3D p1, cVector3D p2, cVector3D p3)
: T1(0)
, T3(0)
, P0(0)
, a(0)
, b(0)
, c(0)
, P1(p1)
, P2(p2)
, P3(p3)
{
	cVector3D tmpVect1, tmpVect2;
	
// initialization of Psr
	tmpVect1 = P3;
	this->Psr = (tmpVect1+P1)/2;

// initialization of Normal
	tmpVect1 = P3;
	tmpVect1-P1;
	tmpVect2 = P2;
	tmpVect2-P1;
	tmpVect1.MultVector(tmpVect2);
	Normal = tmpVect1/(tmpVect1.Norma());

// initialization of R
	R = P2;
	R-Psr;
	//R/(R.Norma());

// initialization of Rz
	Rz = R;
	Rz.MultVector(Normal);
	//Rz/(Rz.Norma());

// initialization of T3
	tmpVect1 = P3;
	tmpVect1-Psr;
	this->T3 = tmpVect1.MultScalar(Rz);
	this->T3 = this->T3/Rz.Norma();

// initialization of T1
	this->T1 = -this->T3;

// initialization of P0
	tmpVect1 = P1;
	tmpVect1-Psr;
	P0 = tmpVect1.MultScalar(R);
	P0 = P0/R.Norma();

// initialization of a
	a = -1/(T3*T3);

// initialization of b
	b = -P0/(T3*R.Norma());	

// initialization of c
	c = 1;
}

float cParabSpline::GetT1(void)
{
	return this->T1;
}

float cParabSpline::GetT3(void)
{
	return this->T3;
}

cVector3D cParabSpline::GetLSK(float T)
{
	cVector3D tmpVect1;

	tmpVect1 = R;
	tmpVect1*(a*T*T + b*T + c);
	return tmpVect1;
}

cVector3D cParabSpline::GetGSK(float T)
{
	cVector3D tmpVect1;

	tmpVect1 = Rz;
	tmpVect1/Rz.Norma();
	tmpVect1*T;
	tmpVect1+Psr;
	tmpVect1+this->GetLSK(T);

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