Курсовая работа: Построение изображений ландшафта в реальном времени
Цель данной работы – реализовать перечисленные алгоритмы в разрабатываемом программном комплексе.
В программе также предусмотрен удобный русскоязычный пользовательский интерфейс, позволяющий редактировать карты изообластей высот, а также управлять получаемым изображением ландшафта (вращать его относительно координатных осей, масштабировать, изменять цвет поверхности и т.д.).
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 последовательных циклах – “слева направо”, “справа налево”, “сверху вниз” и “снизу вверх”.