Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ALL

.pdf
Скачиваний:
278
Добавлен:
12.02.2018
Размер:
15.74 Mб
Скачать

Приложение 1.

Преобразование моделей описания поверхности

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

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

Сначала рассмотрим аспекты точности алгоритма и ограничения для его использования.

1. Равномерную сетку можно рассматривать как растр.

Расстояние между узлами сетки в плоскости (х0у) обуславливает разрешающую способность и определяет точность моделирования по осям х и у.

определим размер растра по горизонтали (cx) и вертикали (cy), чем меньше расстояние между узлами, тем больше точность моделирования, но возрастает количество узлов и соответственно размеры растра.

Объем памяти П = cx cy

2. Необходимо также учесть дискретность представления чисел в компьютере при хранении в памяти значений в узлах сетки.

В современных цифровых компьютерах числа обычно представляются в форматах с разрядностью, кратной 8 (байт). Однобайтовые целые числа дают 256 градаций, двухбайтовые— 65 536 и так далее. Можно также использовать и форматы с плавающей точкой.

*Для решения данной задачи можно использовать алгоритм реализованный в геоинформационной

системе ГИС "ОКО" в 1996 году.

Общая схема алгоритма

В результате работы этого алгоритма получается растр, в котором нет ни одного 0-го пикселя – определены высоты для всех узлов сетки.

Преобразование моделей описания поверхности

Выбираем формат чисел для кодирования пикселей растра. Одной из основных особенностей предложенного алгоритма является то, что число 0 для каждого пикселя указывает на неопределенное значение высоты (пустоты до интерполяции). Это означает, что, например, для однобайтовых пикселей высота имеет не 256, а 255 градаций. Дискретность значений высоты

= диапазон значений/255.

Заполнение пустот выполняется следующим образом:

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

Пункт 4 алгоритма заполнения можно упростить, если при его выполнении не копировать ненулевые пиксели, а перед началом сканирования растра (п. 2) сразу скопировать весь рабочий растр в другой массив.

Преобразование моделей описания поверхности

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

При оконтуривании в растре А появляются новые контуры на границе областей заполнения.

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

В растре A также хранятся предыдущие линии контуров. С каждым циклом заполненияоконтуривания количество контуров изолинии удваивается. Так длится до тех пор, пока контурные линии не сомкнутся — нечего будет заполнять.

Количество циклов интерполяции оценивается как двоичный логарифм расстояния между ненулевыми пикселами растра, на котором отображены исходные данные.

Преобразование моделей описания поверхности

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

Чтобы найти пиксель, ближайший к точке (х,у), алгоритм «последовательно увеличивать радиус, анализируя пиксели, располагающиеся на окружности» не работает.

Если увеличивать радиус окружности по +1, то будет пропущено много точек растра, а если увеличивать шагами, меньшими 1, то много пикселей будет проанализировано повторно.

Поиск можно осуществить, если идти по контуру квадрата (рис.). Но точки на периметре квадрата имеют различное расстояние до центра.

Организуют двухэтапный цикл поиска.

Сначала последовательно увеличиваем размер квадрата с центром в точке (х, у) до тех пор, пока на периметре не обнаружится ненулевой (значащий) пиксель растра.

Рассчитываем расстояние R1.

Если R1 больше, чем (размер квадрата + 1), то второй этап поиска.

Продолжаем увеличивать размер квадрата вплоть до значения R1.

Если находятся новые точки с расстоянием R2 < R1 то поиск продолжается

но максимальный размер окрестности ограничиваем уже R2.

в качестве размера квадрата считается половина его стороны.

Рис. Поиск по периметру квадратов

поверхности

Примерная запись алгоритма поиска ближайшей точки:

Процедура поиска пикселей по периметру квадрата названа здесь ППК(l, xс, yс, r), где l — половинный размер квадрата; xс, yс,— координаты центра квадрата; r — расстояние для сравнения — если находится пиксель с большим расстоянием, то он не учитывается. В результате работы процедуры ППК определяется цвет найденного пикселя (с) и

Неравномерная сетка. Изолинии

Алгоритм для ППК может быть, например, таким:

• Рис. Пример задания поверхности неравномерной сеткой

Пример работы приведенного алгоритма преобразования неравномерной сетки в равномерную.

На рис. изображена модель некоторой поверхности

в виде изообластей высоты.

После первого заполнения растр имеет следующий вид (рис.)

Рис. Вид растра после первого заполнения

Неравномерная сетка. Изолинии

Это уже равномерная сетка высоты. Но поверхность негладкая, большие ступени. Необходимо продолжать интерполяцию дальше.

Потом выполняется оконтуривание (рис.). И так далее — выполняются циклы заполненияоконтуривания. Всего было выполнено 7 циклов. После выполнения каждого цикла равномерная сетка все более точно соответствует гладкой поверхности. рис..

Выполнен один цикл

Два цикла

Рис. Вид растра после оконтуривания

Три цикла Семь циклов

Рис.. Результаты выполнения циклов заполнения-оконтуривания

Приложение 2. Мировые и экранные координаты

При отображении пространственных объектов необходимо знать систему координат.

Рассмотрим две основные системы координат

Мировые координаты – описывают истинное положение объекта в пространстве с заданной точностью.

Система координат устройства изображения. Назовем их экранными.

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

Для синтеза изображения на плоскости достаточно двумерной системы координат.

Однако в некоторых алгоритмах визуализации

Рис. Этапы преобразования координат

используются и трехмерные. Представим

 

цепочку преобразования координат от мировых

 

к экранным следующим образом:

 

Для

совпадают с

 

, полученная

Для аксонометрической проекции коэффициенты матрицы – константы для всех точек

пространства. В крайнем случае – мировые и экранные совпадают – преобразование координат на требуется (в 2-D графике – координаты заданы в пикселях).

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

Иногда в этом случае используют матричную форму с применением обобщенных нелинейных координат.

Соседние файлы в предмете Компьютерная Графика