Разработка программы создания виртуальной фотогалереи
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
Федеральное агентство по образованию
Рязанский Государственный Радиотехнический Университет
Кафедра ЭВМ
Пояснительная записка
к курсовой работе на тему
Разработка программы создания виртуальной фотогалереи
Выполнил
студент группы 541
Гудков Александр
Поверил
Чичикин В.А
Рязань 2008г.
Введение
В рамках курсовой работы средствами объектно-ориентированного языка Object Pascal и библиотеки OpenGL создано помещение фотогалереи и разработан алгоритм, осуществляющий перемещение по галереи. Пользователь с помощью клавиатуры и мыши перемещаться по ней и рассматривать фотографии. Предусмотрен режим просмотра фотогалереи.
1. Теоретическая часть
Курсовой проектвключает два этапа:
1.Разработка алгоритма перемещения по фотогалерее;
2.Создание помещения галереи.
1.1 Разработка алгоритма перемещения по фотогалерее
Одна из возможностей осуществить перемещение по фотогалерее - это перемещать камеру и перерисовывать 3D среду относительно её положения. Это можно осуществить следующим образом:
Вращать и проецировать позицию камеры следуя командам пользователя;
Вращать мир вокруг начала координат противоположено вращению камеры (это даёт иллюзию того, что повернулась камера);
Переместить мир способом, противоположным перемещению камеры (это даёт иллюзию того, что переместилась камера)
Рис 1. Вращение координат
За исходное примем положение, в котором голова смотрит лицом по направлению оси Y, а вверх смотрит по направлению оси Z. Слева направо проходит ось X. Глядя в этом же направлении можно вращать голову вокруг оси Z.
Чтобы повернуть камеру вокруг оси Z применяется оператор вращения мира
(f, 0, 0, 1),
где f - угол, вращающий мир на -?
Чтобы переместиться вдоль осей X, Y применяется оператор
glTranslatef (tx, ty, 0),
где:= ty + sin(f*pi/180)/2;:= tx + cos(f*pi/180)/2;
или:= ty - sin(f*pi/180)/2;:= tx - cos(f*pi/180)/2;
В зависимости от направления движения:
Нажата стрелка влево (перемещение по оси X):
ty := ty - sin(f*pi/180)/2;:= tx + cos(f*pi/180)/2;
Нажата стрелка вправо::= ty + sin(f*pi/180)/2;
tx := tx - cos(f*pi/180)/2;
Нажата стрелка вверх (перемещение по оси Y):
ty := ty + sin((f+90)*pi/180)/2;:= tx - cos((f+90)*pi/180)/2;
Нажата стрелка вниз::= ty - sin((f+90)*pi/180)/2;
tx := tx + cos((f+90)*pi/180)/2;
Фотогалерея состоит из двух основных комнат, каждая из которых имеет размер 1212.
Рис 2. Структура фотогалереи
2. Описание модуля Gallery.pas
.1 Общие сведения
Программная единица представляет собой статическую библиотеку, подключаемую к программе на этапе компиляции.
Наименование модуля Gallery.pas.
Модуль создан на языке Delphi в среде разработки Delphi 7.0
.2 Функциональное назначение
Создание и перемещение по виртуальной фотогалерее в соответствии с командами пользователя.
.3 Описание структуры модуля Gallery.pas.
Модуль содержит 13 процедур, реализующих создание галереи и перемещение по ней.
procedure TfrmGL.FormPaint(Sender: TObject)
Процедура обеспечивает установку параметров графических объектов и вывод на экран комнат фотогалереи, а также осуществление просмотра галереи в автоматическом режиме.
procedure TfrmGL.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
Процедура описывает реакцию программы при изменении положения мыши.
procedure TfrmGL.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
Процедура описывает реакцию программы на нажатие пользователем клавиш управления для передвижения по фотогалереи и установки ограничений выхода пользователя за пределы комнат фотогалереи, а также установления демонстрационного режим и просмотра фотографий.
procedure TfrmGL.FormCreate(Sender: TObject);
Процедура инициализирует переменные и создает ссылку на окно для OpenGL
procedure TfrmGL.FormDestroy(Sender: TObject);
Процедура удаляет все объекты OpenGl, высвобождая память
procedure TfrmGL.FormResize(Sender: TObject);
Процедура перерисовывает окно и создает перспективу
SetDCPixelFormat (hdc : HDC);
Процедура задает формат пикселей для работы c библиотекой OpenGl.
zal1;
Процедура производит рисование обстановки первой комнаты фотогалереи
zal2;
Процедура производит рисование обстановки второй комнаты фотогалереи.
Procedure zal0;
Процедура производит рисование обстановки третьей и четвертой комнаты фотогалереи. Порядок построения второй, третьей и четвертой комнат фотогалереи сходен с первой.
procedure BmpTexture(name:string; k:boolean);
Процедура производит чтение графического файла name, который используется в качестве текстуры в помещении фотогалереи.kartina;
Процедура производит рисование рамы для картины и загрузку изображения картины.
2.4 Вызов и использование модуля
Для использования процедур модуля необходимо на этапе компиляции подключить модуль к проекту, введя название модуля Gallery в список модулей, перечисленных в предложении uses. После этого можно обратиться к необходимой процедуре.
3. Описание применения программной единицы
Процедуры библиотеки Gallery.pas могут применяться при проектировании