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

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