Шаг 38.
Основы компьютерной графики. Базовые растровые алгоритмы. Алгоритмы вывода фигур. Простейший алгоритм закрашивания

    На этом шаге мы рассмотрим простейший алгоритм закрашивания.

    Для всех алгоритмов закрашивания нужно задавать начальную точку внутри контура с координатами x0, y0. Простейший алгоритм можно описать так [1]:

Шаг 1. Определить x0, y0.
Шаг 2. Выполнить функцию ЗАКРАШИВАНИЕ (x0, y0). 	

    Функцию ЗАКРАШИВАНИЕ() определим так:

Функция ЗАКРАШИВАНИЕ (x, y)
{
   Если цвет пикселя (x, y) не равен цвету границы, то 
       {  установить для пикселя (x, y) цвет заполнения
  	ЗАКРАШИВАНИЕ (x+1, y);
	ЗАКРАШИВАНИЕ (x-1, y);
	ЗАКРАШИВАНИЕ (x, y+1);
	ЗАКРАШИВАНИЕ (x, y-1);
	}
}

    Такое определение функции является рекурсивным. Рекурсия позволяет упростить запись некоторых алгоритмов. Но для этого алгоритма рекурсия порождает существенные проблемы - рекурсивные вызовы функции ЗАКРАШИВАНИЕ() делаются для каждого пикселя, что обычно приводит к переполнению стека в ходе выполнения компьютерной программы. Практика показывает, что этот алгоритм неприменим для фигур площадью в тысячу и больше пикселей.

    Можно построить подобный алгоритм и без рекурсии, если вместо стека компьютера использовать отдельные массивы. Тогда стек не переполняется.


(1)Павлидис Т. Алгоритмы машинной графики и обработки изображений. - М.: Радио и связь, 1986. - 188 с.

    На следующем шаге мы рассмотрим волновой алгоритм закрашивания.




Предыдущий шаг Содержание Следующий шаг