рефераты
рефераты рефераты
 логин:   
 пароль:  Регистрация 

МЕНЮ
   Архитектура
География
Геодезия
Геология
Геополитика
Государство и право
Гражданское право и процесс
Делопроизводство
Детали машин
Дистанционное образование
Другое
Жилищное право
Журналистика
Компьютерные сети
Конституционное право зарубежныйх стран
Конституционное право России
Краткое содержание произведений
Криминалистика и криминология
Культурология
Литература языковедение
Маркетинг реклама и торговля
Математика
Медицина
Международные отношения и мировая экономика
Менеджмент и трудовые отношения
Музыка
Налоги
Начертательная геометрия
Оккультизм и уфология
Педагогика
Полиграфия
Политология
Право
Предпринимательство
Программирование и комп-ры
Психология - рефераты
Религия - рефераты
Социология - рефераты
Физика - рефераты
Философия - рефераты
Финансы деньги и налоги
Химия
Экология и охрана природы
Экономика и экономическая теория
Экономико-математическое моделирование
Этика и эстетика
Эргономика
Юриспруденция
Языковедение
Литература
Литература зарубежная
Литература русская
Юридпсихология
Историческая личность
Иностранные языки
Эргономика
Языковедение
Реклама
Цифровые устройства
История
Компьютерные науки
Управленческие науки
Психология педагогика
Промышленность производство
Краеведение и этнография
Религия и мифология
Сексология
Информатика программирование
Биология
Физкультура и спорт
Английский язык
Математика
Безопасность жизнедеятельности
Банковское дело
Биржевое дело
Бухгалтерский учет и аудит
Валютные отношения
Ветеринария
Делопроизводство
Кредитование



Главная > Математика > Курсовая работа: Построение изображений ландшафта в реальном времени

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

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

Факультет «Информатика и системы управления»

Кафедра «Программное обеспечение ЭВМ и информационные технологии»

Курсовой проект

по машинной графике

Расчётно-пояснительная записка

Тема:

«Построение изображений ландшафта в реальном времени»


Оглавление

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. Конструкторская часть

 

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:

       ;

·        поворот относительно осей x, y, z на угол :

o        ось x:

                

o        ось y:

                

o     ось z:

                


2.1.4 Проецирование

В настоящее время наиболее распространены устройства отображения, которые синтезируют изображение на плоскости, например – экране монитора. Устройства, которые создают по-настоящему объемные изображения, пока достаточно редки. Но все чаще появляются сведения о подобных разработках, например, об объемных мониторах [2].

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

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

Пусть мировые координаты будут трехмерными декартовыми координатами. Для синтеза изображения на плоскости достаточно, казалось бы, двумерной экранной системы координат, однако из-за использования алгоритма Z-буфера (этот алгоритм будет описан далее), они должны быть трехмерными.

В компьютерной графике распространены параллельная и центральная (перспективная) проекции.

Рис. 2.1.4.1. Параллельная и центральная проекции

Для центральной проекции лучи проецирования исходят из одной точки, размещенной на конечном расстоянии от объектов и плоскости проецирования. Для параллельной проекции лучи проецирования параллельны.

В данной работе для визуализации сцены использовалась аксонометрическая (разновидность параллельной) проекция, для нее все лучи располагаются под прямым углом к плоскости проецирования.

Как правило, расположение плоскости проецирования задается с помощью двух углов - и .

Рис. 2.1.4.2. Аксонометрическая проекция

Для того, чтобы найти соотношения между координатами (x, y, z) и (X, Y, Z) для любой точки в трехмерном пространстве, рассмотрим преобразование системы координат (x, y, z) в систему (X, Y, Z). Такое преобразование может быть задано двумя шагами:

·        поворот системы координат относительно оси z на угол . Такой поворот описывается матрицей

;

·        поворот новой системы координат (x, y, z) относительно оси x на угол  - получение координаты (X, Y, Z). Матрица поворота:

.

Преобразование координат выражается произведением матриц

Это же преобразование можно записать в формульном виде:

 

2.1.5 Отображение в окне

При формировании изображения на экране монитора, как уже было сказано, необходимы дополнительные преобразования, поскольку система координат в плоскости проецирования может не совпадать с системой координат устройства отображения.

Пусть (Xэ, Yэ, Zэ) это экранные координаты объектов в графическом устройстве отображения. Координаты проецирования обозначим как (X, Y, Z).

Преобразование координат проекции в экранные координаты можно представить как растяжение/сжатие и сдвиг:

.

Такое преобразование сохраняет пропорции объектов благодаря одинаковому коэффициенту растяжения/сжатия k для всех координат. Следует отметить, что для плоского отображения координату Z можно отбросить.

 

2.1.6 Алгоритм Z-буфера

После получения треугольников ландшафта (триангуляции равномерной сетки) и проецирования их на экранную плоскость следует построение изображения ландшафта. В процессе его построения для удаления невидимых поверхностей используется алгоритм Z-буфера.

Это один из простейших алгоритмов удаления невидимых поверхностей. Работает этот алгоритм в пространстве изображения. Идея Z-буфера является простым обобщением идеи о буфере кадра. Буфер кадра используется для запоминания атрибутов (интенсивности) каждого пикселя в пространстве изображения, Z-буфер - это отдельный буфер глубины, используемый для запоминания координаты Z (глубины) каждого видимого пикселя в пространстве изображения. В процессе работы глубина или значение Z каждого нового пикселя, который нужно занести в буфер кадра, сравнивается с глубиной того пикселя, который уже занесен в Z-буфер. Если это сравнение показывает, что новый пиксель расположен впереди пикселя, находящегося в буфере кадра, то новый пиксель заносится в этот буфер и, кроме того, производится корректировка Z-буфера новым значением Z. Если же сравнение дает противоположный результат, то никаких действий не производится. По сути, алгоритм является поиском по x и y наибольшего значения функции Z(x, у). Блок-схема алгоритма выглядит следующим образом:


Рис. 2.1.6.1. Блок-схема алгоритма Z-буфера

Как уже было отмечено, главное преимущество алгоритма — его простота. Так как габариты пространства изображения фиксированы, оценка вычислительной трудоемкости алгоритма не более чем линейна. Поскольку элементы сцены или картинки можно заносить в буфер кадра или в Z-буфер в произвольном порядке, их не нужно предварительно сортировать по приоритету глубины. Поэтому экономится вычислительное время, затрачиваемое на сортировку по глубине, например в алгоритме художника.

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

Другой недостаток алгоритма Z-буфера состоит в трудоемкости устранения лестничного эффекта, а также реализации эффектов прозрачности и просвечивания. Но так как в этой работе не ставилась задача реализации этих эффектов, то использование алгоритма Z-буфера вполне обоснованно.

Математическое содержание алгоритма заключается в следующем: если известно уравнение плоскости, несущей каждый многоугольник, то вычисление глубины каждого пикселя на сканирующей строке можно проделать пошаговым способом. Уравнение плоскости имеет вид:

Для сканирующей строки, поэтому глубина пикселя на этой строке, у которого , равна

или

,

но , поэтому .

Нахождение же абсцисс точек пересечения горизонтали со сторонами треугольника (это единственный вид многоугольников, используемый при визуализации в данной работе) производится следующим образом:

·        для всех сторон треугольника записываются параметрические уравнения вида

;

·        затем для каждой стороны находится параметр t при пересечении с горизонталью :

;

·        если , то рассчитывается абсцисса точки пересечения горизонтали со стороной треугольника:

.

Рис. 2.1.6.2. Поиск абсцисс точек пересечения горизонтали со сторонами треугольника

 

2.1.7 Освещение

В любом трёхмерном приложении использование какой-либо модели освещения всегда прида