Разработка программы создания виртуальной фотогалереи

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

Федеральное агентство по образованию

Рязанский Государственный Радиотехнический Университет

Кафедра ЭВМ

 

 

 

 

 

 

 

 

 

Пояснительная записка

к курсовой работе на тему

Разработка программы создания виртуальной фотогалереи

 

 

Выполнил

студент группы 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 могут применяться при проектировании