![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Растровая развертка многоугольникаСодержание книги
Поиск на нашем сайте
Алгоритм растровой развертки многоугольников основан на построчном сканировании многоугольника с верхней его вершины до нижней. При этом производится заполнение многоугольника по сканируемым строкам. Рассмотрим характер пересечения сканирующей строки с многоугольником (рис. 1.11). Сканирующая строка разбивается многоугольником на пять интервалов в точках ее пересечения со сторонами многоугольника. Необходимо выделить на сканирующей строке точки, принадлежащие внутренней области многоугольника. Из рисунка видно, что внутри многоугольника лежат точки интервалов (x1 - x2) и (x3 - x4). Если вычислить x-координаты точек пересечения сканирующей строки с ребрами многоугольника и упорядочить их по возрастанию, то нечетные интервалы будут лежать во внутренней области многоугольника. Тогда процедура сканирования и поиска точек закрашивания может иметь следующий вид: 1. Находятся x-координаты всех точек пересечения сканирующей строки с ребрами многоугольника. 2. X-координаты упорядочиваются по возрастанию. 3. Закрашиваются точки в нечетных интервалах. Однако алгоритм требует уточнения для двух частных случаев. Первый случай. Пересечение сканирующей строки с горизонтальным ребром (рис. 1.12). В этом случае имеется бесконечное множество точек пересечения ребра со сканирующей строкой. В связи с этим понятие четных и нечетных интервалов теряет смысл. Для решения задачи следует удалить горизонтальное ребро, а пересечения сканирующей строки искать с ребрами смежными ему. В соответствии с идеей алгоритма точки пересечения со смежными ребрами дадут интервал заполнения, совпадающий с удаленным ребром. Второй случай. Пересечение сканирующей строки с вершиной многоугольника. При этом возможны два варианта - пересечение вершины, являющейся локальным экстремумом, и вершины, не являющейся таковой. В первом варианте (рис. 1.13) сканирующая строка пересекает два ребра, пересечения с которыми дают две совпадающие точки - саму вершину многоугольника. Требуется заполнить интервал длиной в одну точку. Этот случай является просто экстремальным. Здесь интервал заполнения вырожден в одну точку. Во втором варианте (рис. 1.14) сканирующая строка дает три точки пересечения с ребрами многоугольника. Причем две из них также совпадают и являются вершиной многоугольника. После упорядочивания x-координат по возрастанию они образуют нечетный интервал, который подлежит заполнению. А интервал между вершиной и точкой пересечения с ребром оказывается четным, не подлежащим заполнению. Для устранения этой проблемы необходимо укоротить одно из смежных ребер, сходящихся в указанной вершине, на одну точку.
Нахождение x-координат точек пересечения сканирующей строки с ребрами многоугольника можно выполнить по уравнению прямой. Процедуру нахождения этих точек можно организовать итерационным методом, для чего необходимо задать конечные точки ребер. Тогда вычисления будут выполняться в соответствии со следующими выражениями: где xк,yн,xк,yн - координаты концевых точек ребра. Для реализации алгоритма вводится понятие активных ребер. Это такие ребра многоугольника, которые пересекаются сканирующей строкой Активные ребра содержатся в таблице активных ребер (ТАР) Окончательно алгоритм растровой развертки многоугольников будет следующим. 1. Перебор всех вершин многоугольника с укорочением одного из смежных ребер для вершин, не являющихся локальными экстремумами. 2. Поиск и удаление горизонтальных ребер. 3. Построение упорядоченной ТР. 4. Принимают первоначальное значение номера сканирующей строки i равной ymin первой записи ТР. 5. Создается пустая ТАР. 6. Выполняется обработка сканирующей строки. 7. Пока ТАР или ТР не пусты, выполняется переход к п. 6. 8. Окончание процедуры.
Растровая развертка круга
- первый интервал - (-y,x) - (y,x); - второй интервал - (-x,y) - (x,y); - третий интервал - (-x,-y) - (x,-y); - четвертый интервал - (-y,-x) - (y,-x). Следует выделить граничные ситуации, когда (x,y) = (R,0) и (x,y) =( В первом случае вместо четырех интервалов получают один интервал, совпадающий с горизонтальным диаметром - (0,R) -(0,-R), и две точки - (R,0) и (-R,0). Во втором случае получается только два интервала: первый - (-
второй - (- Кроме того, при реализации алгоритма необходимо учитывать выбор узла растра при движении “а" и движении “b", так как в первом случае меняется только координата y, а координата x остается неизменной. Во втором случае меняются обе координаты. Это приводит к тому, что интервалы, расположенные во 2, 3, 6 и 7 октантах - ((-y,x) - (y,x)) и ((-y,-x) - (-y,x)), при движении “а" совпадают с предыдущими интервалами по координате x, а по координате y больше на два пикселя - по одной точке с каждого конца интервала. Это приводит к тому, что приходится повторно заполнять интервал, а при выводе линии в инверсных режимах (стили XOR или NOT) ранее заполненный интервал будет стерт
|
||||||
Последнее изменение этой страницы: 2017-02-10; просмотров: 723; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.128.203.158 (0.01 с.) |