10.6.2. Области, заданные контуром

Задание контура с помощью цепных кодов

Рис. 10.27. Задание контура с помощью цепных кодов

Средства для растровой графики

В варианте кодирования, приведенном на рис. 10.27, 6", допускаются восемь направлений и поэтому могут быть представлены 8-связные контуры. Цифра «1» означает, что следующий пиксел маршрута находится «на единицу вверх» и «на единицу вправо»; аналогичные комбинации получаются и для остальных трех диагональных направлений. (Где находится стартовая точка для последовательности, показанной на рисунке?) Цепные коды напоминают относительное рисование (черепашью графику) из главы 3; отличие состоит в том, что здесь перемещение происходит только на один пиксел.

На рис. 10.28 приведена возможная структура данных для хранения контура. Первые два элемента задают стартовый пиксел контура, далее идет количество шагов и список самих шагов. Цепные коды могут обеспечивать очень компактное представление для контуров и областей определенного вида. (Сколько бит на один шаг потребуется для кода с восемью направлениями?). Кроме того, при таком способе легко решаются следующие стандартные задачи.

1. Перемещение контура. Это тривиально"images/tmp8E4A-694.png" alt="Удобная структура данных для контура, закодированного цепным кодом" />

Рис. 10.28. Удобная структура данных для контура, закодированного цепным кодом


⇐ Предыдущая| |Следующая ⇒