Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры по компьютерной графике [по билетам].doc
Скачиваний:
68
Добавлен:
02.05.2014
Размер:
805.89 Кб
Скачать

18. Растровое представление отрезка: постановка задачи, простейший алгоритм, алгоритм цда.

"дискретная плоскость" – множество всех точек с целочисленными координатами на обычной плоскости. Дискретную плоскость часто называют целочисленной решеткой. Нельзя провести непрерывный отрезок прямой линии из одной точки экрана в другую. Можно только подсветить ближайшие к прямой пикселы. Процесс определения пикселов, наилучшим образом аппроксимирующих заданный отрезок, называется разложением отрезка в растр.

Отрезки должны удовлетворять следующим требованиям:

  1. Отрезки должны выглядеть прямыми, начинаться и заканчиваться в заданных точках.

  2. Яркость вдоль отрезка должна быть постоянной и не зависеть от длины и наклона.

  3. Алгоритмы рисования должны быть простыми , т.е. отрезок “рисоваться” должен быстро.

При достаточно высоком разрешении дисплея можно получить приемлемую аппроксимацию прямой линии.

Следует отметить, что постоянная яркость будет у горизонтальных, вертикальных отрезков и под углом 450, причем у отрезков под углом 450 яркость будет меньше чем у вертикальных и горизонтальных отрезков.

Рассмотрим задачу построения растрового изображения отрезка, соединяющего точки (x1, y1) и (x2, y2). Для простоты будем считать, что 0y2-y1x2-x1. Тогда отрезок описывается следующим уравнением:

или у = kx+b .

Основной недостаток алгоритма - использование вещественных вычислений для работы на целочисленной решетке.

Другим простейшим алгоритмом разложения отрезка в растр является алгоритм, построенный по методу цифрового дифференциального анализатора (ЦДА).

Данный алгоритм пригоден для проведения отрезков во всех квадрантах декартовой системы координат.

1) Осуществляется аппроксимация длины отрезка (float len)

2) Полагаем большее из приращений Dy или Dx равным единице растра

3) Округляем величины, а не отбрасываем дробную часть

4) Начало основного цикла

i=1;

while (i<= Len)

{ PutPixel (Int(x), Int(y), Color);

x = x + Dx;

y = y + Dy;

i = i + 1;}

Недостатки алгоритма разложения отрезка в растр, основанного на методе ЦДА:

  1. Использует вещественную арифметику, что приводит к значительным затратам вычислительных ресурсов.

  2. Может быть активизирован пиксел, стоящий за концом отрезка, и если рисуется ломаная, то данный пиксел будет высвечиваться 2 раза.

  3. Результат работы алгоритма зависит от ориентации отрезка, т.е. точность на концевых точках отрезка ухудшается.

Билет 8

Технические средства отсутствуют

20. Растровое представление отрезка: построение сглаженной линии (метод Флойда-Стейнберга, модификация алгоритма Брезенхейма, сглаживание всей сцены).

Основной причиной лестничного эффекта является то, что отрезок или ребро какой-либо фигуры непрерывны для того, чтобы соответствовать дискретным пикселам экрана дисплея.

При наличии нескольких интенсивностей, т. е. полутонов серого или оттенков цвета, внешний вид ребра или отрезка может быть улучшен размыванием краев. Простой метод состоит в том, чтобы устанавливать интенсивность пиксела на ребре пропорционально площади части пиксела, находящейся внутри многоугольника.

В результате простой модификации алгоритма Брезенхейма можно получить аппроксимацию площади части пиксела, находящейся внутри многоугольника. Эту аппроксимацию можно использовать для модуляции интенсивности. При пересечении пиксела и отрезка с тангенсом угла наклона m (0 <= m <= 1) может быть задействован либо один, либо два пиксела. Если пересекается только один пиксел, то площадь правее и ниже отрезка равна уi+ m/2. Если же надо рассмотреть два пиксела, то площадь нижнего пиксела составляет 1 - (1 - yi)2/2m, а верхнего - (yi-1+m)2/2m. Суммарная площадь для двух пикселов равна уi + m /2.

Алгоритм Брезенхейма, учитывающий площадь части пиксела для устранения ступенчатости.

Если к ошибке в исходном алгоритме Брезенхейма добавить величину w = 1 - m, т.е. ввести преобразование e' = e + w, то 0<=e'<=1. Теперь ошибка е' - это мера площади той части пиксела, которая находится внутри многоугольника, т. е. уi+m/2. В связи с этими модификациями начальное значение ошибки равно 1/2, поэтому для первого пиксела алгоритм, приводившийся на первом рисунке, всегда будет выдавать значение интенсивности, равное половине максимальной. Более реалистичное значение для первого пиксела дает перемещение оператора активирования пиксела на другое место. Более того, можно получить непосредственно значение интенсивности, а не десятичную дробь от ее максимума с помощью умножения на максимальное число доступных уровней интенсивности I следующих величин: тангенса угла наклона (m), весового коэффициента (w) и ошибки е'.

Билет 9