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