Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Предмет компьютерной графики.doc
Скачиваний:
6
Добавлен:
05.09.2019
Размер:
230.4 Кб
Скачать

2. Генерация окружностей. Алгоритм Брезенхема.

Существует несколько очень простых, но не эффективных способов преоб­разования окружностей в растровую форму. Например, рассмотрим для про­стоты окружность с центром в начале координат. Ее уравнение записыва­ется как x2 + y2 = R2. Решая это урав­нение относительно y, получим

y = ±

Чтобы изобразить четвертую часть окружности будем изменять x с еди­ничным шагом от 0 до R и на каждом шаге вычислять y. Вторым простым методом растровой развертки окружности является использование вычисле­ний x и y по формулам x = R cos α, y = R sin α, при пошаговом изменении угла α от 00 до 900.

Для упрощения алгоритма растровой развёртки стандартной окружности можно вос­пользоваться её симметрией относительно координатных осей и прямых y = ± x в случае, когда центр окружности не совпадает с началом ко­ординат, эти прямые необходимо сдвинуть параллельно так, чтобы они прошли через центр окружности. Тем са­мым дос­таточно построить растро­вое представление для 1/8 части окружности, а все оставшиеся точки полу­чить симметрией (рис. 2.5).

Рис. 2.1 Восьмисторонняя симметрия

Рассмотрим участок окружности из второго октанта x Є [0, R/ ]. Далее опишем алго­ритм Брезенхейма для этого участка окружности.

На каждом шаге алгоритм выбирает точку Pi (xi, yi), которая является бли­жайшей к ис­тинной окружности. Идея алгоритма заключается в выборе ближайшей точки при по­мощи управляющих переменных, значения которых можно вычислить в пошаговом ре­жиме с использованием небольшого числа сложений, вычитаний и сдвигов.

Рассмотрим небольшой участок сетки пикселов, а также возможные спо­собы (от A до E) прохождения истинной окружности через сетку (Рис. 2.6).

Предположим, что точка Pi-1 была выбрана как ближайшая к окружности при x = xi-1. Теперь найдем, какая из точек Si или Ti расположена ближе к ок­ружности при x = xi-1 + 1.

Рис. 2.2 Варианты прохождения окружности через рас­тровую сетку

Заметим, что ошибка при выборе точки Pi (xi, yi) была равна

D(Pi) = (xi2+ yi2) – R2.

Запишем выражение для ошибок, получаемых при выборе точки Si или Ti.

D(Si) = [(xi-1+ 1)2 + (yi-1)2] – R2

D(Ti) = [(xi-1+ 1)2 + (yi-1 – 1)2] – R2

Если | D(Si) | ≥ | D(Ti) |, то Ti ближе к реальной окружности, иначе выбира­ется Si.

Введем di = | D(Si) | – | D(Ti) |

Ti будет выбираться при di ≥ 0, в противном случае будет устанавливаться Si.

Опуская алгебраические преобразования, запишем di и di+1 для разных ва­риантов вы­бора точки Si или Ti.

D1 = 3 – 2 R

Если выбирается Si (когда di < 0), то di+1 = di + 4 xi-1 + 6

Если выбирается Ti (когда di ≥ 0), то di+1 = di + 4 (xi-1yi-1) + 10

3. Методы устранения ступенчатости. Причини возникновения искажения изображения. Устранение ступенчатости полутонами.

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

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

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