Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
кг (21-24).doc
Скачиваний:
1
Добавлен:
28.09.2019
Размер:
65.54 Кб
Скачать

21. Удаление невидимых линий и поверхностей.

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

чертеж куба без удаления невидимых линий воспринимается неоднозначно и только удаление тех линий или поверхностей, которые невидимы с соответствующей точки зрения, позволяет избавиться от неоднозначности. (в конспекте есть рисунок, № 5,6. На нем нарисованы 3 куба. 1-обычный параллелепипед, 2-куб, без задних линий, которые мы не видим, 3-стенки куба, которые не видны)

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

Алгоритм Робертса был разработан в 1963 году и представляет собой первое известное решение задачи об удалении невидимых линий. Алгоритм требует, чтобы все изображаемые тела или объекты были выпуклыми. Невыпуклые тела должны быть разбиты на выпуклые.

Алгоритм работает в объектной плоскости.

- сначала удаляются из каждого тела те ребра или грани, которые экранируются самим телом.

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

  1. грань не закрывает ребро;

  2. грань полностью закрывает ребро (тогда она удаляется из списка ребер);

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

  4. Алгоритм плавающего горизонта чаше всего используется для удаления невидимых линий трехмерного представления функций, описывающих поверхность в виде F(x, у, z) = 0.

  5. Идея метода заключается в сведении трехмерной задачи к двумерной путем пересечения исходной поверхности последовательностью параллельных секущих плоскостей, имеющих постоянные значения координаты z.

  6. Алгоритм сначала упорядочивает плоскости z = const по возрастанию расстояния до них от точки наблюдения. Затем для каждой плоскости, начиная с ближайшей к точке наблюдения, строится кривая, лежащая на ней, т.е. для каждого значения координаты х в пространстве изображения определяется соответствующее значение y.

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

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

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