Обычно используются три метода сглаживания: предфильтрация (prefiltering), сверхопрос (super-sampling) и постфильтрация (postfiltering).

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

Предфильтрация В технологиях предфильтрации цвета пикселов вычисляются на основе покрытия (coverage) объектом: вычисляется часть площади пиксела, которая покрывается объектом. Рассмотрим сканирующее преобразование белого полигона на черном фоне, изображенного на рис. 10.40, а. Этот полигон размещен в квадратной сетке, центр каждого квадрата которой соответствует центру пиксела на дисплее. Пикселу, половина которого покрывается полигоном, присваивается интенсивность 1/2; пикселу, покрытому на треть, - интенсивность 1/3 и т. д. Если буфер кадров использует 4 бита на пиксел, то черному цвету соответствует 0, а белому - 15; пикселу, покрытому полигоном на четверть, соответствует значение (1/4)15, которое округляется до 4. На рис. 10.40, б приведена таблица значений, полученных после вычисления покрытия каждого пиксела. (Какой вид имел бы этот массив значений пикселов, если бы мы просто опросили этот полигон в центре каждого пиксела, присваивая 15 в случае покрытия прямоугольником этого центра и 0 в противном случае?)

Использование части площади пиксела, покрываемой объектом

Рис 10.40. Использование части площади пиксела, покрываемой объектом Геометрические вычисления, необходимые для нахождения степени покрытия каждого пиксела, могут занять, конечно, очень много времени. Было разработано несколько эффективных приемов. Мы опишем модификацию алгоритма Брезенхема для прямых, разработанную Питтвэем и Уоткинсоном (Рп*е\тау, \\^ктзоп [РШ;е\гау, 170]). Как и в случае самого алгоритма Брезенхема, вычисления здесь инкрементные и основываются на арифметике целых чисел.

Мы уже видели, как подпрограмма закраски полигона обрабатывает строку развертки за строкой, используя список АЕЬ для определения пиксельных серий, подлежащих закрашиванию. Точки пересечения хш, хранящиеся в АЕЬ, обновляются после закраски каждой строки развертки, для чего используется цикл, аналогичный циклу Брезенхема (увеличивать на единицу, если невязка отрицательна, и обновлять невязку). Эти значения невязки можно также использовать для отслеживания покрытия первого и последнего пикселов каждой серии. Затем пикселам вдоль ребер полигона задаются цвета в соответствии с их покрытием полигоном, чем и достигается сглаживание.


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