Приложение Б Московский государственный технический университет им. Н.Э. Баумана Факультет информатики и систем управления Кафедра Компьютерные системы и сети Модуль для построения трёхмерных изображений Руководство программиста Студент: ____________ Руководитель: (Хабаров А.П.) Группа ИУ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