Факультет «Информатика и системы управления»
Кафедра «Программное обеспечение ЭВМ и информационные технологии»
Курсовой проект
по машинной графике
Расчётно-пояснительная записка
Тема:
«Построение изображений ландшафта в реальном времени»
Оглавление
1. Введение
2. Конструкторская часть
2.1 Выбор, обоснование и описание используемых алгоритмов и понятий машинной графики
2.1.1 Равномерная сетка высот
2.1.2 Сглаживание ландшафта
2.1.3 Трехмерные аффинные преобразования
2.1.4 Проецирование
2.1.5 Отображение в окне
2.1.6 Алгоритм Z-буфера
2.1.7 Освещение
2.1.7.1 Однотонная закраска (метод гранения)
2.1.7.2 Метод Гуро
2.1.7.3 Метод Фонга
2.1.7.4 Анализ методов Гуро и Фонга
2.1.8 Последовательность действий при визуализации сцены
2.2 Типы, структуры данных и функции, использованные при реализации программного комплекса
2.2.1 Представление исходных данных
2.2.2 Программа «Редактор карт»
2.2.2.1 Изообласти высоты
2.2.2.2 Равномерная сетка высот и ландшафт
2.2.2.3 Тип и структура файла для хранения карт изообластей
2.2.2.4 Распределение программы по модулям
2.2.2.5 Связи между модулями программы
2.2.3 Программа «Просмотр ландшафта»
2.2.3.1 Процедуры манипуляции изображением ландшафта
2.2.3.2 Z-буфер
2.2.3.3 Буфер кадра
2.2.3.4 Процедуры визуализации ландшафта
2.2.3.2 Тип и структура файла для хранения ландшафта
2.2.3.3 Распределение программы по модулям
2.2.3.4 Связи между модулями программы
3. Технологическая часть
3.1 Выбор языка программирования
3.2 Описание программного комплекса
3.2.1 Программа «Редактор карт»
3.2.1.1 Общие сведения
3.2.1.2 Интерфейс программы
3.2.1.3 Работа программы
3.2.2 Программа «Просмотр ландшафта»
3.2.2.1 Общие сведения
3.2.2.2 Интерфейс программы
3.2.2.3 Работа программы
3.2.3 Системные требования
4. Экспериментально-исследовательская часть
4.1 Исследование № 1
4.2 Исследование № 2
4.3 Исследование № 3
5. Заключение
6. Список литературы
1. Введение
Решение задачи построения поверхности на основе карты изолиний или изообластей высот является одним из этапов создания геоинформационной системы (компьютерная система, которая хранит в базе данных описание и обеспечивает анализ объектов, расположенных на поверхности Земли). Описание поверхности изолиниями высоты часто используется, например, в картографии. В данной работе решается задача построения изображения ландшафта на основе карты изообластей высот в реальном времени.
В свою очередь задача построения изображения ландшафта на основе карты изообластей включает в себя следующие задачи:
· преобразование данной карты в равномерную сетку высот;
· триангуляция полученной сетки высот;
· при необходимости – сглаживание триангулированной сетки для получения изображений ландшафтов, близких по очертаниям к реальным.
Требование к скорости построения изображений ландшафта (для комфортной работы необходима производительность порядка 30 кадров в секунду [1]) определяет выбор алгоритма машинной графики, используемого для визуализации сцены – алгоритм Z-буфера в наибольшей степени отвечает этому требованию, так как он является наиболее простым в своей группе и требует наименьшего количества вычислительных ресурсов.
Кроме этого, в данной работе затронуты другие алгоритмы машинной графики: преобразование координат, проецирование, освещение.
При работе с освещением реализованы следующие алгоритмы заполнения плоских граней (в данной работе - треугольников):
· метод гранения (однотонной закраски с учетом ориентации нормали к плоскости грани);
· метод Гуро – метод закрашивания граней трехмерных объектов, который использует билинейную интерполяцию интенсивности цвета в вершинах граней;
· метод Фонга – метод, основанный на билинейной интерполяции векторов нормалей в вершинах граней.
Цель данной работы – реализовать перечисленные алгоритмы в разрабатываемом программном комплексе.
В программе также предусмотрен удобный русскоязычный пользовательский интерфейс, позволяющий редактировать карты изообластей высот, а также управлять получаемым изображением ландшафта (вращать его относительно координатных осей, масштабировать, изменять цвет поверхности и т.д.).
2.1 Выбор, обоснование и описание используемых
алгоритмов и понятий машинной графики
2.1.1 Равномерная сетка высот
Существует большое количество моделей описания поверхностей. Наиболее распространенными из них являются:
· аналитическая модель – для описания поверхности используются математические формулы, например функции от двух аргументов z = f(x, y);
· векторная полигональная модель – для описания пространственных объектов используются такие элементы, как вершины, векторы, полилинии, полигоны, полигональные поверхности;
· воксельная модель – представляет собой трехмерный растр. Подобно тому, как пиксели располагаются на плоском изображении, воксели образуют трехмерные объекты в некотором объеме;
· неравномерная сетка – в этой модели поверхность описывается в виде множества отдельных точек, принадлежащих поверхности.
В данной работе в качестве модели описания поверхности (ландшафта) используется равномерная сетка высот. Эта модель описывает координаты отдельных точек поверхности способом, показанным на рисунке:
Рис. 2.1.1.1. Общий вид равномерной сетки высот
Каждому узлу сетки с индексами (i, j) приписывается значение высоты Zij. Индексам (i, j) отвечают определенные значения координат (x, y). Расстояние между узлами одинаковое – dX по оси X и dY по оси Y.
Фактически такая модель представляет собой двумерный массив, растр, матрицу, каждый элемент которой сохраняет значение высоты.
Следует отметить, что не каждая поверхность может быть представлена с помощью этой модели, так как если в каждом узле записывается только одно значение высоты, то это означает, что поверхность описывается однозначной функцией z = f(x, y). Кроме того, невозможно моделирование вертикальных граней.
В случае представления ландшафта в виде равномерной сетки высот эти ограничения являются незначительными и вполне допустимыми. Равномерная сетка часто используется для описания рельефа земной поверхности [2].
Следует выделить следующие положительные черты модели равномерной сетки:
· простота описания поверхностей;
· возможность быстро узнать высоту любой точки поверхности простой интерполяцией.
Но эта модель также имеет и недостатки:
· для описания сложных поверхностей необходимо большое количество узлов, которое может быть ограничено объемом памяти компьютера;
· поверхности, которые соответствуют неоднозначной функции высоты в узлах сетки, не могут моделироваться (как уже говорилось, это ограничение незначительно в условиях данной работы).
Но в данной работе равномерная сетка используется опосредованно – сразу же при получении она разбивается на треугольники (производится ее триангуляция), поскольку реализация необходимых в процессе работы алгоритмов машинной графики для этого примитива наиболее проста. Разбиение на треугольники производится путем проведения диагонали из точки (i, j) в точку (i – 1, j + 1).
2.1.2 Сглаживание ландшафта
Построение ландшафта может быть произведено сразу после триангуляции равномерной сетки, но в этом случае очертания ландшафта будут резкими. Если это нежелательно, то можно воспользоваться методом сглаживания, реализованным в данной работе.
Его суть заключается в следующем. В процессе сглаживания в цикле производится усреднение высот 4 соседних пикселей. Для повешения качества и эффективности сглаживания, оно производится в 4 последовательных циклах – “слева направо”, “справа налево”, “сверху вниз” и “снизу вверх”.
Рис. 2.1.2.1. Циклы сглаживания ландшафта
Пиксели для усреднения высот выбираются следующим образом: на K-ой итерации цикла производится усреднение высот пикселей с индексами (i – 1, j - 1), (i – 1, j), (i, j - 1) и (i, j), на (K + 1)-ой же, в зависимости от номера цикла, усредняются высоты следующих пикселей:
· в I цикле – пиксели тех же двух строк с индексами столбцов, увеличенными на 1;
· во II цикле – пиксели тех же двух строк с индексами столбцов, уменьшенными на 1;
· в III цикле – пиксели тех же столбцов со строчными индексами, увеличенными на 1;
· в IV цикле – пиксели тех же столбцов со строчными индексами, уменьшенными на 1.
Ниже приведена иллюстрация, демонстрирующая результаты сглаживания тестового ландшафта:
Рис. 2.1.2.2. Результаты сглаживания – без сглаживания, 1 цикл, 10 циклов.
2.1.3 Трехмерные аффинные преобразования
В процессе работы программы может возникать необходимость преобразования объектов сцены – их сдвига, масштабирования, поворота.
Для трехмерного пространства любое аффинное преобразование может быть представлено последовательностью простейших операций [3].
Ниже приводятся уравнения и матрицы преобразований:
· сдвиг точки вдоль координатных осей на dx, dy, dz:
;· масштабирование относительно начала координат с коэффициентами kx, ky, kz:
;