Второе улучшение алгоритма Брезенхема

Первое улучшение алгоритма Брезенхема

Недостаток предыдущего алгоритма заключается в том, что в нем используется деление, которое является очень медленной операцией. Исключим эту операцию и перейдем к работе с целыми числами. Чтобы избавиться от умножения, надо преобразовать декартовы координаты в экранные. Чтобы оперировать целыми числами е заменяют на e' = 2x * e = 2x * (y/x - 1/2) = 2y - 2x. Программа, написанная по такому улучшенному алгоритму, работает гораздо быстрее. Также этот алгоритм дает самую незазубренную линию.

Попробуем теперь уменьшить зазубренность линий за счет применения полутонов: при наличии нескольких интенсивностей (оттенков) одного цвета внешний вид прямой может быть улучшен размыванием ее краев. Самый простой способ состоит в том, чтобы устанавливать интенсивность пиксела на прямой пропорционально площади части пиксела, находящейся внутри. В результате простой модификации алгоритма Брезенхема можно получить аппроксимацию площади части пиксела, находящейся внутри линии.

Поправка к старому алгоритму: e' = e + w = e + (1 - m), m = y * I/x, где I — интенсивность или максимальное число градаций при переходе от черного к белому. Ошибка e' учитывает площадь, отсекаемую от пиксела.

 

Новый алгоритм: