Отсечение невидимых частей объектов(Clipping)

Содержание

Слайд 2

Видовое преобразование

Видовое преобразование

Слайд 3

Отсечение (пирамида видимости)

Отсечение (пирамида видимости)

Слайд 4

Отсечение(Clipping) видимого объема в окне перспективы

Отсечение(Clipping) видимого объема в окне перспективы

Слайд 5

Отсечение(Clipping) видимого объема в окнах параллельных проекций

Отсечение(Clipping) видимого объема в окнах параллельных проекций

Слайд 6

Алгоритмы отсечения Отсечение 2D Отсечение 3D Алгоритмы отсечения могут быть реализованы

Алгоритмы отсечения

Отсечение 2D
Отсечение 3D
Алгоритмы отсечения могут быть реализованы программно или аппаратно.

Алгоритмы отсечения, реализованные программно, зачастую оказываются недостаточно быстродействующими для интерактивных графических приложений.
Поэтому как 2D, так и 3D алгоритмы отсечения реализуются аппаратными или микропрограммными средствами.
Слайд 7

Алгоритм отсечения 2D Плоская сцена Окно вывода – выпуклое, регулярной формы

Алгоритм отсечения 2D

Плоская сцена
Окно вывода – выпуклое, регулярной формы
Цель алгоритма отсечения

– определить те точки, отрезки (части отрезков), которые лежат внутри окна вывода.
Эти точки, отрезки (части отрезков) остаются для визуализации, а все остальное отбрасывается.
Слайд 8

Окно вывода Регулярным отсекающим окном является прямоугольник, стороны которого параллельны осям

Окно вывода

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

системы координат. Например, осям координат экрана.
Слайд 9

Шаг 1. Отсечение точек CW(u,v) точка с координатами u и v. Umin Vmin

Шаг 1. Отсечение точек

CW(u,v) точка с координатами u и v.
Umin <=

U <= Umax
Vmin <= V <= Vmax
Слайд 10

Шаг 2. Отсечение отрезков. Алгоритм Сазерленда-Коэна Рассмотрим задачу отсечения отрезков прямых.

Шаг 2. Отсечение отрезков. Алгоритм Сазерленда-Коэна

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

из них полностью лежат внутри области экрана, другие целиком вне ее, а некоторые пересекают границу экрана.
Алгоритм Сазерленда-Коэна позволяет найти полностью видимые и отсекать полностью невидимые отрезки.
Слайд 11

Код окна вывода - 0000

Код окна вывода - 0000

Слайд 12

Категории отрезков (& - определяется коньюнкция кодов концов отрезка) Полностью видимый

Категории отрезков (& - определяется коньюнкция кодов концов отрезка)

Полностью видимый – код1

& код2 = 0000.
Тривиально невидимый - код1 & код2 ≠ 0000.
Неопределенный - код1 ≠ 0000, код2 ≠ 0000,
код1 & код2 = 0000.
Алгоритм работает в пространстве изображений(растровый), т.к. важно свести задачу к двоичному виду(реализовано аппаратно или микропрограммно), а не к решению геометрической задачи поиска точки пересечения отрезков на основе системы линейных уравнений, X=x1 + t(x2-x1)
Y=y1 + t(y2-y1).
Слайд 13

Шаг 3. Алгоритм разбиения средней точкой (для неопределенных отрезков) Для отрезков,

Шаг 3. Алгоритм разбиения средней точкой (для неопределенных отрезков)

Для отрезков, пересекающих окно

вывода, которые нельзя принять за видимые или полностью отбросить.
Последовательно определяется средняя точка при делении отрезка пополам до тех пор, пока одна из частей отрезка не будет принята целиком(если есть пересечение), а другая часть – целиком отброшена.
Максимально необходимое число делений = максимальному числу двоичных разрядов, используемых для представления координат u и v.
Слайд 14

Алгоритм Сазерленда-Коэна удобен, для отсечения частей изображения значительно выходящих за границы окна вывода

Алгоритм Сазерленда-Коэна удобен, для отсечения частей изображения значительно выходящих за границы

окна вывода
Слайд 15

Отсечение 3d объектов (отсечение по видимому объему) Двумя наиболее распространенными формами

Отсечение 3d объектов (отсечение по видимому объему)

Двумя наиболее распространенными формами видимого объема

являются:
Усеченная пирамида,
Прямоугольный параллелепипед.
Как и 2d отсечении, отрезки, которые полностью видимы или тривиально невидимы, можно идентифицировать с помощью алгоритма Сазерленда-Коэна.
В трехмерном случае используется 6-битный код.
В биты кода заносятся 1 и 0 с помощью обобщения двумерной процедуры.
В случае частичной видимости необходимо определить пересечения отрезка с гранями отсекающего объема
Слайд 16

Отсечение в однородных координатах Когда отсечение необходимо провести в однородной системе

Отсечение в однородных координатах

Когда отсечение необходимо провести в однородной системе координат,

то нужно проявить осторожность, если при этом производится еще и проецирование. Отрезок может «заворачиваться» в бесконечности так, что внутри видимого объема(если он не ограничен дальней плоскостью) будут видны сразу обе части отрезка.
Джим Блинн доказал, что отсечение всех отрезков до завершения процедуры перспективного проецирования(присутствует деление всех координат на на значение однородной координаты), удаляет части отрезков, которые «возвращаются» из бесконечности.
Лианг и Барский получили корректный результат отсечения отрезков в однородной системе координат, используя усеченную пирамиду видимости.
Доказано, что и к отсекающему объему, и к отрезку перед проецированием можно применить любое аффинное преобразование(т.е. повороты, переносы и т.п.)
Слайд 17

Отсечение многоугольников Предыдущее обсуждение было связано с отсечением отрезков. Разумеется, многоугольник

Отсечение многоугольников

Предыдущее обсуждение было связано с отсечением отрезков. Разумеется, многоугольник можно

рассматривать как набор отрезков.
Однако, если замкнутый многоугольник отсекается, как набор отрезков, то части исходного объекта могут превратиться в один или более открытых многоугольников.
Если многоугольники являются сплошными областями(а не заштрихованными), то необходимо, чтобы замкнутость сохранялась и у результата. Например, отрезки (a,b) и (c,d) должны быть добавлены к описанию видимой части многоугольника.

b

a

d

c