Заказать курсовые, контрольные, рефераты...
Образовательные работы на заказ. Недорого!

Алгоритм Brezenhema. 
Алгоритм Брезенхема

РефератПомощь в написанииУзнать стоимостьмоей работы

Алгоритм брезенхем дискретный пиксел Хотя алгоритм Брезенхема был первоначально разработан для цифровых графопостроителей, однако он в той же степени подходит для использования растровыми устройствами с ЭЛТ. Алгоритм выбирает оптимальные растровые координаты для представления отрезка. В процессе работы одна из координат — либо x, либо y (в зависимости от углового коэффициента) — изменяется… Читать ещё >

Алгоритм Brezenhema. Алгоритм Брезенхема (реферат, курсовая, диплом, контрольная)

алгоритм брезенхем дискретный пиксел Хотя алгоритм Брезенхема был первоначально разработан для цифровых графопостроителей, однако он в той же степени подходит для использования растровыми устройствами с ЭЛТ. Алгоритм выбирает оптимальные растровые координаты для представления отрезка. В процессе работы одна из координат — либо x, либо y (в зависимости от углового коэффициента) — изменяется на единицу. Изменение другой координаты (на 0 или 1) в зависимости от расстояния между действительным положением отрезка и ближайших координат сетки. Такое расстояние мы назовем погрешностью.

Алгоритм построен так, что нужно проверить лишь знак этой погрешности. На рис. 1 это иллюстрируется для отрезка в первом октанте, т. е. для отрезка с угловым коэффициентом, лежащим в диапазоне от 0 до 1. Из рисунка можно заметить, если угловой коэффициент отрезка с точки (0,0) больше, чем ½, то пересечение с прямой x = 1 будет расположен ближе к прямой y = 1, чем к прямой y = 0. Следовательно, точка растра (1,1) лучше аппроксимирует ход отрезка, чем точка (1,0). Если угловой коэффициент меньше ½, то наоборот, для углового коэффициента, равного ½, нет лучшего выбора. В данном случае алгоритм выбирает точку (1,1).

Основная идея алгоритма Брезенхема.

Рис. 1. Основная идея алгоритма Брезенхема

Но не все отрезки проходят через точки растра. Подобная ситуация иллюстрируется рис. 2, где отрезок с тангенсом угла наклона 3/8 сначала проходит через точку растра (0,0) и последовательно пересекает три пиксела. Также иллюстрируется вычисления погрешности при представлении отрезка дискретными пикселами.

График погрешности в алгоритме Брезенхема.

Рис. 2. График погрешности в алгоритме Брезенхема

Поэтому желательно проверять только знак ошибки, то она сначала устанавливается равной ½.Таким образом, если угловой коэффициент отрезка равна или больше ½, то величина погрешности в следующей точке растра с координатами (1,0) может быть вычислена как е = е + м где m — угловой коэффициент. В нашем случае при начальном значении погрешности Ѕ.

е = -1 / 2 +3 / 8 = -1 / 8.

Так как е отрицательное, отрезок пройдет ниже середины пиксела. Итак, пиксел на том же горизонтальном уровне лучше аппроксимирует положение отрезка, поэтому в не увеличивается. Аналогично вычисляем погрешность e = 1/8 +3 / 8 = ¼ в следующей точке растра (2,0). Теперь е положительное, значит, отрезок пройдет выше средней точки. Растровый элемент (2,1) с последующей по величине координатой в лучшее аппроксимирует положение отрезка. Итак, в увеличивается на 1. Прежде чем рассматривать следующий пиксел, необходимо откорректировать ошибку вычитанием из нее 1. Имеем e = ¼−1 = -3 / 4. Заметим, что пересечение вертикальной прямой x = 2 с заданным отрезком лежит на ¼ ниже прямой у = 1. Если же перенести отрезок ½ вниз, мы получим именно величину ¾. Продолжение вычислений для следующего пиксела дает e = ¾ +3 / 8 = -3 / 8.

Так как е отрицательное, то y не увеличивается. Из всего сказанного следует, что погрешность — это интервал, отсекается по оси y рассмотренным отрезком в каждом растровом элементе (относительно -1 / 2).

Приведем алгоритм Брезенхема для первого октанта, т. е. для случая 0 Ј Dy Ј Dx.

Алгоритм Брезенхема разложения в растр отрезка для первого октанта предполагается, что концы отрезка (x1, y1) и (x2, y2) не совпадают.

Integer — функция преобразования в целое х, у, Dx, Dy — целые е — настоящее инициализация переменных х = x1.

у = y 1.

Dx = x2-x1.

Dy = y2-y1.

Инициализация с поправкой на половину пиксела е = Dy/Dx-½.

начало основного цикла для г = 1, чтобы Dx.

участок (х, у) в то время как (е => 0).

у = у +1.

е = е-1.

конец в то время как х = х +1.

е = е + Dy / Dx.

Затем я отделка Блок-схема алгоритма на рис. 3. Пример приведен ниже.

Пример 1. Алгоритм Брезенхема.

Рассмотрим отрезок, проведенный из точки (0,0) в точку (5,5). Расписание отрезка в растр по алгоритму Брезенхема приводит к такому результату:

начальные установки х = 0.

у = 0.

Dx = 5.

Два = 5.

= 1−½ = ½.

Результаты работы пошагового цикла.

я.

Участок.

и.

х.

и.

½.

(0,0).

— 1 / 2.

½.

(1,1).

— 1 / 2.

½.

(2,2).

— 1 / 2.

½.

(3,3).

— 1 / 2.

½.

(4,4).

— 1 / 2.

½.

Алгоритмы Блок-схема Brezenhema.

Рис. 3. Алгоритмы Блок-схема Brezenhema

Результат показан на рис. 4 совпадает с ожидаемым. Заметим, что точка растра с координатами (5,5) не активизирована. Эту точку можно активировать путем изменения цикла for-next на 0 to Dx. Активация точки (0,0) можно устранить, если поставить оператор Plot непосредственно перед строкой next i.

Рис. 4. Результат работы алгоритма Брезенхема в первом октанте

Показать весь текст
Заполнить форму текущей работой