Вспомогательный класс



Вспомогательный класс

Нам вновь, как и в предыдущем уроке, понадобится класс, инкапсулирующий функциональность точки трехмерного пространства CPoint3D. Контейнер объектов этого класса будет хранить вершины изображаемой поверхности. В коде, который приведен ниже, присутствует слегка измененное по сравнению с предыдущим объявление класса CPoint3D, а также объявления новых данных и методов класса cocview. Заодно мы произвели упрощения стартового кода, которые обсуждались в уроке 5. Весь код введите в файл OGView.h вместо существующей в нем заготовки. Файл должен приобрести следующий вид1:

#pragma once

//========== Вспомогательный класс

class CPointSD

{

public: //====== Координаты точки

float x;

float у;

float z;



//====== Набор конструкторов

CPointSD ()

{

х = у - z = 0.f;

}

CPoint3D (float cl, float c2, float c3)

{

x = cl; z = c2; У = сЗ; ,

}

//====== Операция присвоения

CPoint3DS operator= (const CPointSDS pt)

x = pt.x; z = pt.z;

return *this;

У = pt.y;

//====== Конструктор копирования

CPointSD (const CPoint3D& pt)

{

*this = pt;

//=========== Класс окна OpenGL

class COGView :

public CView

{

protected:

COGView () ;

DECLARE_DYNCREATE(COGView)

public:

virtual ~COGView();

virtual void OnDraw(CDC* pDC) ;

virtual BOOL PreCreateWindow(CREATESTRUCT& cs) ,

//======= Новые данные класса

long m_BkClr; //

int m_LightParara[ll]; //

HGLRC m_hRC; //

HDC m_hdc; //

GLfloat m_AngleX; //

GLfloat m_AngleY; //

GLfloat m_AngleView; //

GLfloat m_fRangeX; //

GLfloat m_fRangeY; //

GLfloat m_fRangeZ; //

GLfloat m_dx; //

GLfloat m_dy; //

GLfloat m_xTrans; //

GLfloat m_yTrans; //

GLfloat m_zTrans; //

GLenura m_FillMode; //

bool m_bCaptured; //

bool m_bRightButton; //

bool m_bQuad; //

CPoint m_pt; //

UINT m_xSize; //

UINT m_zSize; //

//====== Массив вершин поверхности

vector <CPoint3D> m_cPoints;

//====== Новые методы класса

//=-==== Подготовка изображения

void DrawScene();

Цвет фона окна Параметры освещения Контекст OpenGL Контекст Windows Угол поворота вокруг оси X Угол поворота вокруг оси Y Угол перспективы Размер объекта вдоль X Размер объекта вдоль Y Размер объекта вдоль Z Квант смещения вдоль X Квант смещения вдоль Y Смещение вдоль X Смещение вдоль Y Смещение вдоль Z Режим заполнения полигонов Признак захвата мыши Флаг правой кнопки мыши Флаг использования GL_QUAD Текущая позиция мыши Текущий размер окна вдоль X Текущий размер окна вдоль Y

//====== Создание графика по умолчанию

void DefaultGraphic();

//====== Создание массива по данным из буфера

void SetGraphPoints(BYTE* buff, DWORD nSize);

//====== Установка параметров освещения

void SetLight();

//====== Изменение одного из параметров освещения

void SetLightParam (short lp, int nPos);

//====== Определение действующих параметров освещения

void GetLightParams(int *pPos); //====== Работа с файлом данных

void ReadData();

//====== Чтение данных из файла

bool DoRead(HANDLE hFile);

//====== Установка Работа с файлом данных

void SetBkColor();

DECLARE MESSAGE MAP()



Содержание раздела