Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторные работы3 / KG2 / spatial
.h//---------------------------------------------------------------------------
#ifndef spatialH
#define spatialH
#include "kg2.h"
#include "matrix.h"
#include "graphics.hpp"
#include "math.h"
/* варианты текущих состояний */
enum
{
GOOD=1,
CAMERA_IN,
LINE_OUT,
CAMERA_NULL
};
class Tspatial
{
private:
/* Канва для отрисовки */
TCanvas* canva;
/* Координаты осей координат */
point3D XBegin, XEnd, YBegin, YEnd, ZBegin, ZEnd;
/* Координаты точки и камеры */
point3D P, C;
/* Координаты точек проекций */
point3D P1, P2, P3, Px, Py, Pz;
/* Точка О - координаты центра */
point2D O;
/* Длина осей и угол между У и -Х */
float lengthOS, alpha;
/* Угол поворота вокруг OX */
float angleX;
float angleY;
//float angleZ;
/* Конвертируем точку для экранной системы координат */
point2D convert(point3D);
/* Переводим градусы в радианы */
float radian(float alpha);
/* тип проекции */
char proection;
/* текущее состояние: рисовать / камера внутри / выход за границы */
char status;
/* Проверка выхождения линий за пределы области отрисовки */
bool ifLineOut();
public:
/* Конструктор */
Tspatial(TCanvas* tempc);
/* Задаем базовые параметры */
void setParams(float oX, float oY, float temp_lengthos, float temp_alpha);
/* Вызываем все необходимые изменения */
void change();
/* Изменяем координаты камеры, подсчеты относительно угла поворота */
void changeAngle (int x, int y, int z);
/* Изменяем координаты точки */
void changePoint (int x, int y, int z);
/* Изменения типа проецирования */
void changeProection (char type);
/* Выполнение основных вычислений */
void calculate();
/* Отрисовка */
void draw();
};
//---------------------------------------------------------------------------
#endif