Практические упражнения
10.5.6. Имитация алгоритма серийного закрашивания Разместите на листе миллиметровки область, представляющую букву «В» и содержащую по меньшей мере 14 внутренних пикселов. Проделайте вручную операции алгоритма серийного закрашивания, описанного в этом разделе, записывая содержимое стека перед каждым выталкиванием.
10.5.7. Наихудшие области Какая форма области из 20 внутренних пикселов является наихудшей для алгоритма серийного закрашивания - в том смысле, что потребуется наибольшее число выталкиваний из стека? Является ли количество выталкиваний разумной оценкой длительности выполнения алгоритма? Рассмотрите другие оценки.
10.5.8. Закрашивание 8-связных областей Расширьте алгоритм серийного закрашивания так, чтобы он закрашивал 8-связные области.
10.6. Манипулирование символически-определенными областями
10.6. Манипулирование символически-определенными областями Алгоритмы заливки (flood-fill) и серийного закрашивания (run-fill) читают буфер кадров пиксел за пикселом с целью определения их цвета и таким образом «пробираются ощупью» через область. Можно предположить, что алгоритм закраски был бы намного эффективнее, если бы он имел «высокоуровневое», символическое описание области, а ему приходится перечислять пиксел за пикселом. Поэтому давайте рассмотрим несколько способов символического описания области, каждый из которых обладает своими достоинствами и недостатками. Чаще всего в графике используется метод описания области как внутренней части некоторого полигона, и такой подход разработан в деталях. Упомянутые методы подразделяются на два класса: первый из них представляет область в виде набора прямоугольников, а второй задает область с помощью контура (path), определяющего границу этой области.
10.6.1. Области, описываемые прямоугольниками При таком методе задания области она описывается как список прямоугольников. Размеры этих прямоугольников могут быть от одного пиксела вплоть до всей пиксельной карты. Область может иметь отверстия («дыры») и даже изолированные «пятна» (blobs).