powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритм заливки полигона, как искать активные ребра?
1 сообщений из 1, страница 1 из 1
Алгоритм заливки полигона, как искать активные ребра?
    #38946774
I dont know
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток, мне требуется коллективный разум. Суть в следующем: имеется документ с описанием нескольких алгоритмов заливки полигона http://www.fit.com.ru/Surveys/Course/Lecture_05_Part_2.doc Конкретно разбираю алгоритм построчной заливки с активными рёбрами(пункт 2.2). Для примера, я набросал простейший полигон с тремя вершинами, чтобы было попроще http://itmages.ru/image/view/2415642/8b32f19c Алгоритм по сути состоит из 2 основных этапов:

Заполнить список ребёр(вернее информацией о рёбрах) и упорядочить этот список по y1, т.е по у-координате начала ребра.
В цикле от верха до низа(по y координате) полигона, если достигли вершины, пересчитать список активных рёбер, далее для сканировать уже по ним(найти точки пересечения по оси х и закрасить эти промежутки линиями).

Вроде как всё просто. Проблема заключается в том, что я немного не понимаю, как найти все активные рёбра для вершины. Попробую пояснить. По алгоритму(этап II), при достижении вершины полигона, т.е y_curr(тек. позиция скан.линии) = y1( у- координата начала) вершины, это ребро мы добавляем в список активных. Но фишка в том, что в этом случае, в списке акт. ребёр у нас будет всего одно ребро, а не два, как должно быть. Для приведённой картинки, это будет ребро AB, хотя, туда же должно добавиться ребро CA. Потому что, у ребра CA, точка начала, находится в вершине С, а не А, соответственно при сканировании, когда ещё «скан-линия» находится в точке А, координата(у) начала ребра CA ни как не может быть равна y_curr, ей может быть равна y-координата конца, но не начала. И так получается для любого ребра, по мере прохождения «скан-линии» сверху вниз.

Почему так получается: потому что ребра рисуются по очереди, и в каждой вершине не могут быть одновременно координаты начала одного и другого ребра(вернее могут, но не в случае выпуклого многоугольника)... Наверно я что-то упускаю или не так понимаю? Растолкуйте :(
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритм заливки полигона, как искать активные ребра?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]