Рис. 10.36. Таблица ребер (ЕТ), характеризующая полигон Q
Список для каждой строки развертки содержит информацию о каждом ребре полигона Q, нижняя конечная точка которого находится на данной строке развертки. (Это позволяет эффективно сортировать ребра полигона Q по их нижним ординатам у; этот процесс называют блочной сортировкой (bucket sort) ребер полигона.) Поэтому многие из списков таблицы ЕТ являются пустыми.
Каждое ребро характеризуется записью того же типа, который используется в списке AEL. Поля уы и 1/тп заполняются соответствующими значениями, а в поле х помещается абсцисса х нижней концевой точки рассматриваемого ребра.
Таблица ребер упрощает идентификацию тех ребер, которые подлежат включению в список AEL в процессе его обновления. Для новой текущей строки развертки у достижимы все ребра, указанные в строке таблицы ребер edgetable[y], поэтому они добавляются в список AEL. Поле х. автоматически содержит начальное значение абсциссы пересечения, а в прочие поля уже записаны нужные значения. Поэтому при формировании записи для нового ребра должны быть изменены только несколько указа10.7. Заполнение полигонально-определенных областей телей. Перед закрашиванием пиксельных серий список AEL пересортировывается по возрастанию значений х.т1 с целью сохранения четности.
Листинг 10.8. Скелет алгоритма закрашивания полигона AEL = NULL"opengl1_726.html">⇐ Предыдущая| |Следующая ⇒