- •1. Введение 3
- •Область применения
- •История развитияКг
- •Концептуальная модель интерактивно-графической системы
- •Вывод информации
- •Графопостроители
- •Электрографические, лазерные и струйные устройства
- •Электрографические, ферромагнитные, лазерные устройства
- •Принцип работы лазерного принтера
- •Струйные устройтва
- •Принцип работы струйных принтеров
- •Векторные и растровые дисплеи на электронно-лучевых трубках (элт)
- •Монохромная электронно- лучевая трубка
- •Отклоняющие системы
- •Люминофор
- •Цветные элт
- •Элт с теневой маской
- •Альтернативные способы вывода информации
- •Устройства ввода информации
- •Канал вывода информации
- •Прикладная структура данных
- •Прикладной графический пакет
- •Графическая система
- •Канал ввода информации
- •Растровая развертка примитивов
- •Растровая развертка прямых линий
- •Растровая развертка окружностей
- •Растровая развертка и заполнение полигональных областей
- •Области и алгоритмы по их заполнению
- •Алгоритм построчного сканирования
- •Простой рекурсивный алгоритм ( затравочное заполнение )
- •Алгоритм заполнения многоугольников
- •Простой алгоритм с упорядоченным списком ребер
- •Алгоритм заполнения по ребрам
- •Алгоритм со списком ребер и флагом
- •Работа с двухмерными объектами
- •Закраска изображения
- •Управление двухмерными объектами
- •Отсечение многоугольников
- •Последовательное отсечение многоугольника: алгоритм Сазерленда-Ходжмена
- •Последовательное отсечение многоугольника:алгоритм Вейлера - Азертона
- •Отсечение Вейлера- Азертона
Последовательное отсечение многоугольника:алгоритм Вейлера - Азертона
Рассматривается два многоугольника:
1-ый-отсекаемый
2-ой-отсекающий

Рис. 7-12
Если ребро входит в отсекающий многоугольник (2) при обходе по часовой стрелке, то продолжается обход исследуемого многоугольника.
Если ребро выходит из отсекаемого многоугольника (1), то проиводится поворот направо с запоминанием точки пересечения.
Точки пересечения добавляются в список вершин.

Рис. 7-13
Как обрабатываемый, так и отсекающий многоугольники описываются в алгоритме циклическими списками их вершин. Внешняя граница каждого из этих многоугольников обходиться по часовой стрелке, внутренние границы или отверстия- против часовой стрелке. Это условие означает, что при обходе вершин многоугольника в порядке их следования в соответствующем списке внутренняя его область будет расположена справа от границы. Границы обрабатываемого и отсекающего многоугольников могут пресекаться или не пересекаться между собой. Если они пересекаются, то точки пересечения образуют пары. Одно пересечение из пары возникает когда ребро обрабатываемого многоугольника входит внутрь отсекающего многоугольника, а другое- когда оно выходит оттуда. Основная идея заключается в том, что алгоритм начинает с точки пересечения входного типа, затем он прослеживает внешнюю границу по часовой стрелке до тех пор, пока не обнаруживается еще одно пересечение с отсекающим многоугольником. В точке последнего пересечения производиться поворот направо и далее прослеживается внешняя граница отсекателя по часовой стрелке до тех пор, пока не обнаруживается ее пересечение с обрабатываемым многоугольником. И вновь в точке последнего пересечения производиться поворот направо и далее прослеживается граница обрабатываемого многоугольника.

Рис. 7-14
Отсечение Вейлера- Азертона
Этот процесс продолжается до тех пор, пока не встретиться начальная вершина. Внутренние границы обрабатываемого многоугольника обходятся против часовой стрелки (смотри рисунок).
Более формальная запись этого алгоритма имеет следующий вид:
вычислить все пересечения обрабатываемого и отсекающего многоугольников;
добавить все эти пересечения к спискам вершин обрабатываемого и отсекающего многоугольников. Поместить все точки пересечения и установить двусторонние связи между списками вершин обрабатываемого и отсекающего многоугольников для каждой такой точки;
обработать непересекающиеся границы многоугольников;
установить два списка принадлежности, один - для границ, лежащих внутри отсекающего многоугольника, и другой- для границ, лежащих вне отсекателя. Проигнорировать такие границы отсекателя, которые лежат вне обрабатывающего многоугольника. Границы отсекателя, попавшие внутрь обрабатывающего многоугольника, образуют в нем дыры. Следовательно, копии границ отсекающего многоугольника должны попасть в оба писка принадлежности: внутренний и внешний. Занести эти границы в соответствующие списки принадлежности;
создать два списка вершин, являющихся точками пересечения;
один- список входов – содержит только пресечения, образованные ребрами обрабатываемого многоугольника, которые входят внутрь отсекателя. Другой- список выходов – содержит только пересечения , образованные ребрами обрабатываемого многоугольника, которые выходят изнутри отсекателя. Типы точек пересечения будут чередоваться при обходе границы. Поэтому достаточно определить тип только у одной из каждой пары точек пересечения;
реализовать отсечение;
поиск многоугольников, лежащих внутри отсекателя, ведется с помощью следующей процедуры. Взять точку пересечения из списка входов. Если этот список пуст, то поиск завершен. Просматривать список вершин обрабатываемого многоугольника до тех пор, покане обнаружиться пересечение. Скопировать вершины из списка вершин обрабатываемого многоугольника вплоть до этого пересечения в список внутренней принадлежности. Используя двустороннюю связь, перейти к списку вершин отсекающего многоугольника. Просматривать список вершин отсекателя до тех пор, пока не обнаружиться пересечение. Скопировать вершины из списка вершин отсекателя вплоть до этого пересечения в список внутренней принадлежности. Вернуться назад в список вершин обрабатываемого многоугольника. Повторять эти действия до тех пор, пока не будет достигнута начальная вершина. В этот момент новый внутренний многоугольник замыкается;
поиск многоугольников, лежащих вне отсекателя, ведется с помощью такой же процедуры, за исключением того что начальная точка пересечения берется из списка выходов, а вершины из списка вершин отсекателя просматриваются в обратом порядке. Списки вершин многоугольников при этом копируются в список внешней принадлежности. Связать все отверстия, т.е. внутренние границы, с соответствующими им внешними границами. Поскольку внешние границы ориентированы по часовой стрелке, а внутренние границы - против часовой стрелки, эту операцию удобно выполнить путем проверки ориентации границ;
процесс завершен.
