Rukovodstvo_programmistax - Московский государственный

advertisement
Приложение Б
Московский государственный технический университет им. Н.Э. Баумана
Факультет информатики и систем управления
Кафедра Компьютерные системы и сети
Модуль для построения трёхмерных изображений
Руководство программиста
Студент:
____________
Руководитель:
(Хабаров А.П.)
Группа ИУ6-33.
______________ (Иванова Г.С.)
Москва 2010
Объект IDrawer3D содержит следующие методы:
virtual HRESULT __stdcall SetCameraPosition(double x, double y, double z)
Функция задаёт позицию наблюдателя, всегда возвращает S_OK.
virtual HRESULT __stdcall SetCameraDirection(double x, double y, double z)
Функция задаёт направление обзора. Если заданный вектор нулевой, то возвращает
S_FALSE, в обратном случае возвращает S_OK.
virtual HRESULT __stdcall SetCameraUpVector(double x, double y, double z)
Функция задаёт вектор, определяющий положение левой и правой сторон окна вывода в
пространстве. Если заданный вектор нулевой, то возвращает S_FALSE, иначе S_OK.
virtual HRESULT __stdcall SetScreenDistance(double l)
Задаёт расстояние от точки наблюдения до плоскости проекций. Если передаваемый
параметр больше нуля, то функция возвращает S_OK, иначе S_FALSE.
SetScreenDimensions(double width, double height)
Задаёт ширину и высоту окна. Если оба параметра больше нуля, то функция возвращает
S_OK, иначе S_FALSE.
virtual HRESULT __stdcall SetWindow(HWND w)
Задаёт окно вывода. Возвращает S_OK, если окно задано верно, и S_FALSE в обратном
случае.
virtual HRESULT __stdcall DrawTriangle(double x1, double y1, double z1,
double x2, double y2, double z2,
double x3, double y3, double z3)
Выполняет отрисовку треугольника цветом, заданным с помощью SetAmbientColor, если
выключен расчёт освещения, и цветом, определяемым на основе расчёта освещения, если такой
расчёт включен. При успешной отрисовке треугольника возвращает S_OK, иначе S_FALSE.
virtual HRESULT __stdcall UpdateWindowData()
Обновляет информацию об окне вывода. Должна вызываться при изменении размеров
окна вывода. Возвращает S_OK, если информация успешно обновлена, или S_FALSE в обратном
случае.
2
virtual HRESULT __stdcall ZBufferEnable(bool enable)
Если параметр равен true, то включается z-буфер, если false, то отключается. Всегда
возвращает S_OK.
virtual HRESULT __stdcall BeginDraw()
Должна вызываться перед началом рисования. Возвращает S_OK, если подготовка к
рисованию прошла успешно, иначе S_FALSE.
virtual HRESULT __stdcall EndDraw()
Должна вызываться после конца рисования. Выводит получившееся изображение в окно
вывода. Возвращает S_OK, если удалось вывести изображение, или S_FALSE, в обратном случае.
virtual HRESULT __stdcall SetBackgroundColor(RGBColor color)
Устанавливает цвет фона. Всегда возвращает S_OK.
virtual HRESULT __stdcall EnableLighting(bool enable)
Если параметр равен true, включается обработка освещения, если false, то отключается.
Всегда возвращает S_OK.
virtual HRESULT __stdcall EnableLight(bool enable, char LightNumber)
Включает или отключает источник освещения с номером LightNumber (номер источника
освещения лежит в пределах от 0 до 9). Если параметр enable равен true, то источник включается,
иначе – отключается. Возвращает S_OK, если номер источника задан верно, в обратном случае
S_FALSE.
virtual HRESULT __stdcall SetLightParameters(LightParameters Parameters, char
LightNumber)
Задаёт параметры источника освещения с номером LightNumber (номер должен лежать в
пределах от 0 до 9). Если параметры источника или его номер заданы неверно, то возвращает
S_FALSE, иначе S_OK.
virtual HRESULT __stdcall SetGlobalLight(RGBColor color)
Задаёт значение цвета глобального освещения. Всегда возвращает S_OK.
3
virtual HRESULT __stdcall SetAmbientColor(RGBColor color)
Устанавливает цвет треугольника, если отключена обработка освещения, или задаёт
коэффициенты отражения треугольником рассеянного света, если обработка освещения включена.
Всегда возвращает S_OK.
virtual HRESULT __stdcall SetDiffuseColor(RGBColor color)
Задаёт значения коэффициенты отражения треугольником диффузного света. Всегда
возвращает S_OK.
virtual HRESULT __stdcall SetSpecularColor(RGBColor color)
Задаёт коэффициенты отражения треугольником зеркального света. Всегда возвращает
S_OK.
Объект IDrawer3D использует следующие типы данных:
struct RGBColor
{
unsigned char RColor;
unsigned char GColor;
unsigned char BColor;
};
RColor – интенсивность или коэффициент отражения красного цвета
GColor - интенсивность или коэффициент отражения зелёного цвета
BColor – интенсивность или коэффициент отражения синего цвета
struct Point3D
{
double x;
double y;
double z;
};
x, y, z – координаты точки
4
struct LightParameters
{
RGBColor AmbientColor;
RGBColor DiffuseColor;
RGBColor SpecularColor;
Point3D Position;
double ConstantAttenuation;
double LinearAttenuation;
double QuadraticAttenuation;
double SpecularParameter;
};
AmbientColor – интенсивность рассеянного света источника освещения
DiffuseColor - интенсивность диффузного света источника освещения
SpecularColor - интенсивность отражённого света источника освещения
Position – позиция источника освещения
ConstantAttenuation – постоянная составляющая коэффициента ослабления интенсивности
источника света с расстоянием
LinearAttenuation - линейная составляющая коэффициента ослабления интенсивности
источника света с расстоянием
QuadraticAttenuation – квадратичная составляющая коэффициента ослабления
интенсивности источника света с расстоянием
SpecularParameter – коэффициент, задающий размер бликов от источника освещения
5
Download