10.6.2. Области, заданные контуром
Рис. 10.27. Задание контура с помощью цепных кодов
Средства для растровой графики
В варианте кодирования, приведенном на рис. 10.27, 6", допускаются восемь направлений и поэтому могут быть представлены 8-связные контуры. Цифра «1» означает, что следующий пиксел маршрута находится «на единицу вверх» и «на единицу вправо»; аналогичные комбинации получаются и для остальных трех диагональных направлений. (Где находится стартовая точка для последовательности, показанной на рисунке?) Цепные коды напоминают относительное рисование (черепашью графику) из главы 3; отличие состоит в том, что здесь перемещение происходит только на один пиксел.
На рис. 10.28 приведена возможная структура данных для хранения контура. Первые два элемента задают стартовый пиксел контура, далее идет количество шагов и список самих шагов. Цепные коды могут обеспечивать очень компактное представление для контуров и областей определенного вида. (Сколько бит на один шаг потребуется для кода с восемью направлениями?). Кроме того, при таком способе легко решаются следующие стандартные задачи.
1. Перемещение контура. Это тривиально"images/tmp8E4A-694.png" alt="Удобная структура данных для контура, закодированного цепным кодом">
Рис. 10.28. Удобная структура данных для контура, закодированного цепным кодом