Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СКТ - 5,6сем.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
8.67 Mб
Скачать

Алгоритм плавающего горизонта

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

Алгоритм плавающего горизонта чаще всего используется для удаления невидимых линий трехмерного представления функций, описывающих поверхность в виде:

F(x,y,z)=0

Этот алгоритм работает в пространстве изображения.

Главная идея метода заключается в сведении трехмерной задачи к двумерной путем пересечения исходной поверхности последовательностью параллельных секущих плоскостей, имеющих постоянные значения координат x, y или z. На рис.1 параллельные плоскости определяются постоянными значениями z. Функция F(x,y,z)=0 сводится к последовательности кривых, лежащих в каждой из этих параллельных плоскостей, например к последовательности y=f(x,z) или x=g(y,z),

где z постоянно на каждой из заданных параллельных плоскостей.

Теперь поверхность складывается из последовательности кривых. Спроецируем их на плоскость z=0 рис.2. Для каждого значения координаты x в пространстве изображения определяется соответствующее значение y. Алгоритм удаления невидимой линии заключается в следующем:

Если на текущей плоскости при некотором заданном значении x соответствующее значение y на кривой больше значения у для всех предыдущих кривых при этом значении х, то текущая кривая видима в этой точке; в противном случае она невидима.

Невидимые участки показаны пунктиром.

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

Если очередная кривая окажется ниже самой первой, то алгоритм сработает не верно (см. рис.3). Необходимо ввести нижний горизонт при помощи второго массива. Этот массив содержит наименьшее значение у для каждого значения х. Тогда алгоритм такой:

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

Алгоритмы построчного сканирования для криволинейных поверхностей

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

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

Будем задавать поверхность параметрическими уравнениями:

Пересечение сканирующей плоскости с поверхностью дает так называемую линию уровня, или изолинию. Эта кривая может быть неодносвязной, т. е. состоять из нескольких отдельных кривых. Чтобы получить эту кривую, необходимо решить уравнение

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]