Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры по компьютерной графике [по вопросам].doc
Скачиваний:
84
Добавлен:
02.05.2014
Размер:
783.36 Кб
Скачать

Задача отсечения Вопрос 24

Если изображение выходит за пределы экрана, то на части дисплеев увеличивается время построения за счет того, что изображение строится в "уме". В некоторых дисплеях это приводит к искажению изображения. Поэтому требуется выполнения отсечения сцены по границам окна видимости.

Двумерный алгоритм Лианга-Барски

В 1982 г. Лианг и Барски предложили алгоритмы отсечения прямоугольным окном с использованием параметрического представления для двух, трех и четырехмерного отсечения.

Продолжим каждую из четырех границ окна до бесконечных прямых. Каждая из таких прямых делит плоскость на 2 области. Назовем "видимой частью" ту, в которой находится окно отсечения.Пусть конечные точки отрезка есть V0 и V1 с координатами (x0,y0) и (x1,y1), соответственно. Тогда параметрическое представление линии может быть задано следующим образом:

Или в общем виде для отрезка, заданного точками V0 и V1: V(t)    =   V0   +  (V1   -  V0)   ·  t

Для точек V0 и V1 параметр t равен 0 и 1, соответственно. Меняя t от 0 до 1 перемещаемся по отрезку V0V1 от точки V0 к точке V1. Изменяя t в интервале от -∞ до +∞, получаем бесконечную (далее удлиненную) прямую, ориентация которой - от точки V0 к точке V1.

Подставляя параметрическое представление, заданное уравнениями, в неравенства, получим следующие соотношения для частей удлиненной линии, которая находится в окне отсечения:

-dx·t ≤ x0   -  Xлев и dx·t ≤ Xправ   -  x0,

-dy·t ≤ y0   -  Yниз и dy·t ≤ Yверх   -  y0.

Заметим, что в этих соотношениях - неравенства, описывающие внутреннюю часть окна отсечения, в то время как равенства определяют его границы. Рассматривая неравенства, они имеют одинаковую форму вида: Pi·t    ≤   Qi       для   i   = 1,2,3,4.

Тогда каждое неравенство задает диапазон значений параметра t, для которых эта удлиненная линия находится на видимой стороне соответствующей линии границы. Более того, конкретное значение параметра t для точки пересечения есть t = Qi/Pi. Причем знак Qi показывает на какой стороне соответствующей линии границы находится точка V0. А именно, если Qi ≥ 0, тогда V0 находится на видимой стороне линии границы, включая и ее. Если же Qi    <   0, тогда V0 находится на невидимой стороне. Ясно, что любое Pi может быть меньше 0, больше 0 и равно 0.

Задача отсечения Вопрос 25

Если изображение выходит за пределы экрана, то на части дисплеев увеличивается время построения за счет того, что изображение строится в "уме". В некоторых дисплеях это приводит к искажению изображения. Поэтому требуется выполнения отсечения сцены по границам окна видимости.

Двумерный алгоритм Кируса-Бека

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

Так как многоугольник предполагается выпуклым, то может быть только две точки пересечения отрезка с окном. Пусть Ni - внутренняя нормаль, а P = V1 - V0 - вектор, определяющий ориентацию отсекаемого отрезка, тогда ориентация отрезка относительно i-й стороны окна определяется знаком скалярного произведения Pi =   Ni ·V, равного произведению длин векторов на косинус наименьшего угла, требуемого для поворота вектора Ni до совпадения по направлению с вектором V: Pi = Ni ·P   =  Ni ·(V1   -  V0). (2)

  1. При Pi < 0 отсекаемый отрезок направлен с внутренней на внешнюю стороны

  2. При Pi = 0 точки V0 и V1 либо совпадают, либо отсекаемый отрезок параллелен i-й

  3. При Pi > 0 отсекаемый отрезок направлен с внешней на внутреннюю сторону

a) Изнутри наружу

б) Параллельно границе

в) Снаружи внутрь

Рассмотрим теперь скалярное произведение внутренней нормали Ni к i-й границе на вектор Q(t) = V(t) - Fi, начинающийся в начальной точке ребра окна и заканчивающийся в некоторой точке V(t) удлиненной линии. Qi    =   Ni ·Q    =   Ni ·[V(t)   -  Fi]       

При  Qi < 0

точка  V(t)  лежит  с   внешней  стороны  границы

(5)

При  Qi = 0

точка  V(t)  лежит  на  самой   границе

При  Qi > 0

точка  V(t)  лежит  с   внутренней  стороны  границы

a) Точка V вне

б) Точка V на границе

в) Точка V внутри

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

Как следует из (2), Pi равно нулю если отрезок либо вырожден в точку, либо параллелен границе. В этом случае следует проанализировать знак Qi и принять или не принять решение об отбрасывании отрезка целиком в соответствии с условиями (2).

Если же Pi не равно 0, то уравнение (9) используется для вычисления значений параметров t, соответствующих точкам пересечений удлиненной линии с линиями границ.