Разработка приложения с использованием OpenGL для динамического изображения трехмерной модели объекта "Часовой механизм"

Дипломная работа - Компьютеры, программирование

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



В°сти каркаса. Оно представлено в виде линий золотого цвета и имеет роль декоративного украшения.

Следующим шагом является рисование каркаса в виде параллелепипеда с прямоугольным отверстием с лицевой стороны для решетки, позади которой будет наблюдаться качение маятника. Для этого изображаются прямоугольники определённого цвета специальным образом.

Для большей схожести с современными часами добавлен сверху предмет в виде шапки. А строится она с помощью функций предназначенных для работы со сплайновыми поверхностями.

Рисование решётки происходит с помощью готовых функций для рисования объектов. Этими объектами являются два конуса и сфера. При этом конусы направлены на встречу друг другу, а сфера межу ними. Для нужного расположения каждого объекта и решётки в целом использовались функции glTranslatef и glRotatef.

Изображение бриллианта в центре циферблата также имеет декоративный смысл. Он изображается с помощью готовой функции auxSolidIc6sahedron(0.05), где 0,05 его размер.

Так же в iене присутствуют локальные источники света, их два. Можно включать/выключать эффект тумана и задавать ему любые параметра цвета от 0 до 1 в формате RGB.

Наглядная последовательность применяемых функций в курсовом проекте представлена в Приложении В. А результат работы программы в Приложении Г

.2 Разработка интерфейса пользователя

Пользователь имеет широкий набор возможностей воздействовать на iену:

задавать угол вращения и точку в трехмерном пространстве, относительно которой будет происходить вращение;

устанавливать время на часах;

задавать цвет тумана;

временно приостанавливать вращение, время и запускать его с точки приостановки;

изменять масштаб модели;

ускорять и корректировать угол вращения в динамическом режиме.

Для использования этих возможностей пользователь может использовать: меню и горячие клавиши.

Рассмотрим пункты меню. Пункт View содержим под пункты:

Toolbar для отображения/скрытия панели инструментов;

Status bar для отображения/скрытия строки состояния;

Rotate вызывает диалоговое окно, в котором задаётся угол вращения и точка в трехмерном пространстве, относительно которой будет происходить вращение;

Installation of time вызывает диалоговое окно, в котором устанавливается время на часах;

Fog вызывает диалоговое окно, в котором задаётся цвет тумана.

Пункт Stop содержит под пункты:

All_stop временно приостанавливает вращение и время;

Time_stop временно приостанавливает только время;

Rotate_stop временно приостанавливает только вращение.

Пункт Start содержим под пункты:

Allstart запускает время и вращение с точки приостановки;

Time_start запускает только время с точки приостановки;

Rotate_start запускает только вращение с точки приостановки. Горячие клавиши расширяют функциональную возможность меню.

Рассмотрим функциональное назначение клавиш:

Клавиша Т для увеличения масштаба объекта;

Клавиша >1 для уменьшения масштаба объекта;

Клавиша + для увеличения угла вращения;

Клавиша - для уменьшения угла вращения;

Клавиша А для уменьшения значения координаты относительно оси х;

Клавиша W для увеличения значения координаты относительно оси у;

Клавиша Q для увеличения значения координаты относительно оси;

Клавиша Е для уменьшения значения координаты относительно оси z.

Программный код создания пользовательского интерфейса представлен в Приложении А.

.3 Разработка подсистемы управлениями событиями

Любое windows-положение основано на событиях и их обработке, другими словами поведение программы управляется событиями. Данный проект тоже является windows приложением, и, следовательно, обработка событий занимает важное место. Любая программа, основанная на MFC, берет на себя заботу об обработке события, программист должен лишь указать код, который нужно выполнить при возникновении конкретного события.

К основным событиям, играющим важную, для корректной работы разработанной программы относятся следующие:

- WM_KEYDOWN;

ID_START_ALLSTART:COMMAND;

1D_START_ROTATESTART:COMMAND;

ID_START_TIMEESTART:COMMAND;

ID_STOP_ALLSTOP:COMMAND;

ID_STOP_ROTATESTOP:COMMAND;

ID_STOP_TIMEESTOP:COMMAND;

ID_VIEW_FOG:COMMAND;

ID_VIEWJNSTALLATIONOFTIME:COMMAND;

ID_VIEW_ROTATE:COMMAND.

В обработчике события WM_S1ZE выполняется код, необходимый для изменения iены относительно размеров окна, в обработчике события WMDESTROY освобождение занятых ресурсов. В обработчик WMERASEBKGND вставлен код для предотвращения мерцания. В обработчике WM_TIMER вызывается метод usr_Bigen(), который перерисовывает iену заново. В обработчике WM_KEYDOWN выполняются действия с объектом, которые соответствуют нажатой кнопки. Остальные события служат для обработки событий выбор пунктов главного меню. Из описании приведенных выше хорошо видно, что для чего служит.

3. Информационное и программное обеспечение

.1 Общие сведения о программе

Программа называется Трехмерная модель часового механизма, версия 1.0. При её использовании, пользователь получает возможность работать с визуальной моделью часов. Вращать объект (модель) относительно трёх осей, изменять скорость вращения. Включать/выключать эффект тумана, выбирать цвет тумана, изменять масштаб. Приостанавливать как часовой механизм, так и вращение и снова запускать с места приостановки. Программное обеспечение, на котором разработано приложение - Microsoft Visual C++ 6.0.

.2