- •0.2 Генерация векторов
- •0.2.1 Цифровой дифференциальный анализатор
- •0.2.2 Алгоритм Брезенхема
- •0.2.3 Улучшение качества аппроксимации векторов
- •Модифицированный алгоритм Брезенхема
- •0.2.4 Улучшение качества изображения фильтрацией
- •0.3 Генерация окружности
- •0.3.1 Алгоритм Брезенхема
- •Для варианта 1:
- •Для вариантов 5 и 6:
- •Для вариантов 2 и 3:
- •Для варианта 7:
- •0.4 Заполнение многоугольника
- •0.4.1 Построчное заполнение
- •0.4.2 Сортировка методом распределяющего подсчета
- •0.5 Заливка области с затравкой
- •0.5.1 Простой алгоритм заливки
- •0.5.2 Построчный алгоритм заливки с затравкой
Для вариантов 2 и 3:
Dg і 0 и Dd < 0, так как горизонтальный пиксел либо вне, либо на окружности, а диагональный внутри.
|
Добавив и вычтя (Y-1)2 получим:
|
В квадратных скобках стоит Dd, так что
|
Для варианта 1:
Ясно, что должен быть выбран горизонтальный пиксел Pg. Проверка компонент di показывает, что Dg < 0 и Dd < 0, причем di < 0, так как диагональная точка больше удалена от окружности, т.е. по критерию di < 0 как и в предыдущих случаях следует выбрать горизонтальный пиксел Pg, что верно.
Случай Dd > 0
Здесь в качестве следующего пиксела могут быть выбраны или диагональный - Pd или вертикальный Pv.
Для определения того, какую пиксел выбрать Pd или Pv составим разность:
|
Если si Ј 0, то расстояние до вертикальной точки больше и надо выбирать диагональный пиксел Pd, если же si > 0, то выбираем вертикальный пиксел Pv.
Рассмотрим вычисление si для разных вариантов.
Для вариантов 5 и 6:
Dd > 0 и Dv Ј 0, так как диагональный пиксел вне, а вертикальный либо вне либо на окружности.
|
Добавив и вычтя (X+1)2 получим:
|
В квадратных скобках стоит Dd, так что
|
