Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции в формате doc / Курс лекций_новый_1.doc
Скачиваний:
40
Добавлен:
20.05.2014
Размер:
1 Мб
Скачать
    1. Растровая развертка окружностей

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

Рассмотрим участок окружности в 1-м октанте, где функция x = f(y), при начальных условиях х = 0, у = R является монотонно убывающей. На рисунке показаны возможные траектории прохождения реальной окружности.

Рис. 6-3

Основной расчетной формулой является формула окружности с центром в начале координат и радиусом R:

х2+ у2= R2

(4)

Если воспользоваться данной формулой «впрямую» то возникнут два недостатка использования данного метода:

  1. работа с действительными числами;

  2. искажение реальной окружности при разложении в растр (см. рисунок).

Рис. 6-4

Алгоритм настроен на выбор пиксела, для которого минимален квадрат расстояния между одним из них и реальной траекторией окружности:

  1. mh= |(xi+1)2+ (yi)2–R2|;

  2. md= |(xi+1)2+ (yi-1)2–R2|;

  3. mv= |(xi)2+ (yi-1)2–R2|.

Как и в случае построения прямой, на каждом i-м шаге вычисляется управляющая переменная Di, которая представляет собой разность между квадратами расстояний от центра окружности до диагонального пиксела (xi + 1, yi – 1) и от центра до реальной точки на окружности:

х2 Di = (xi + 1)2 + (yi – 1)2 – R2

(5)

В случае 1 и 2 диагональный пиксел находится внутри реальной окружности (Di<0). Далее надо решить выбор направлений mh или md. Для этого вычисляется разность квадратов для этих пикселов:

di = |(xi + 1)2 + (yi)2 – R2| - |(xi + 1)2 + (yi – 1)2 – R2|,

  • при di  0 выбирается точка mh;

  • при di > 0 выбирается точка md.

(6)

Аналогичным образом вычисляем ошибку для случаев 4 и 3. В итоге получим следующие соотношения:

  1. Di<0

  1. di <= 0 выбираем mh

  2. di > 0 выбираем md

  1. Di 0

  1. di <= 0 выбираем md

  2. di > 0 выбираем mv

  1. Di= 0 выбираем md

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

для направления mh

  • xi+1= xi+ 1;

  • yi+1= yi;

  • Di+1= (xi+1+ 1)2+ (yi+1– 1)2– R2= Di+2xi+1+1.

для направления md

  • xi+1= xi+ 1;

  • yi+1= yi– 1;

  • Di+1= + 1)2+ (yi+1– 1)2– R2= Di+2xi+1- 2yi+1+ 2.

для направления md

  • xi+1 = xi;

  • yi+1 = yi – 1;

  • Di+1= Di- 2xi+1+ 1.

Операция умножения на 2 легко реализуется с помощью операции сдвига влево. Приведенный алгоритм работает в первом октанте. Для ускорения работы алгоритма используют принцип восьмисторонней симметрии, суть которого заключается в симметричном отображении октантов (см рисунок).

Рис. 6-5

    1. Растровая развертка и заполнение полигональных областей

Для построения элементарных объектов (схем, чертежей, диаграмм и т.п.) в векторном представлении, достаточно пользоваться такими примитивами, как ребра, дуги, окружности. Для построения более сложных двухмерных объектов с закрашиванием областей применяются алгоритмы Растровое изображение позволяет осуществлять рассмотренными вышдвухмерном рапредставлении Растровая развертка многоугольников предполагает заполнение их определенным цветом

Соседние файлы в папке Лекции в формате doc