2.4 Окружность в первом квадранте. 2.5 Выбор пикселов в первом квадранте

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

mH = | ( xi + 1 )2 + ( yi )2 – R2 |

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

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

Вычисления можно упростить, если заметить, что в окрестности точки ( xi, yi ) возможны только пять типов пересечений окружности и сетки растра, приведенных на рис.2.6.

Разность между квадратами расстояний от центра окружности до диагонального пиксела ( xi + 1, yi- 1 ) и от центра до точки на окружности R2 равна

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

2.6 Пересечение окружности и сетки растра

При D < 0 диагональная точка ( xi + 1, yi- 1 ) находится внутри реальной окружности, т. е. это случаи 1 или 2 на рис.2.6. Ясно, что в этой ситуации следует выбрать либо пиксел ( xi + 1, yi ) т. е. mH, либо пиксел ( xi + 1, yi- 1 ), т. е. mD. Для этого сначала рассмотрим случай 1 и проверим разность квадратов расстояний от окружности до пикселов в горизонтальном и диагональном направлениях:

При d < 0 расстояние от окружности до диагонального пиксела

(mD) больше, чем до горизонтального (mH). Напротив, если d > 0, расстояние до горизонтального пиксела (mH) больше. Таким образом,

при d < 0 выбираем mH ( xi + 1, уi )

при d > 0 выбираем mD ( xi + 1, уi – 1 )

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

Количество вычислений, необходимых для оценки величины d, можно сократить, если заметить, что в случае 1

так как диагональный пиксел ( xi + 1, уi – 1 ) всегда лежит внутри окружности, а горизонтальный ( xi + 1, уi ) - вне ее. Таким образом, d можно вычислить по формуле

Дополнение до полного квадрата члена ( yi )2 с помощью добавления и вычитания - 2уi + 1 дает

В квадратных скобках стоит по определению Di, и его подстановка

d = 2(Di + yi) – 1

существенно упрощает выражение.

Рассмотрим случай 2 на рис.2.6 и заметим, что здесь должен быть выбран горизонтальный пиксел ( xi + 1, уi ), так как у является монотонно убывающей функцией. Проверка компонент d показывает, что

поскольку в случае 2 горизонтальный ( xi + 1, уi ) и диагональный ( xi + 1, уi – 1 ) пикселы лежат внутри окружности. Следовательно, d < 0, и при использовании того же самого критерия, что и в случае 1, выбирается пиксел ( xi + 1, уi ).

Если Di > 0, то диагональная точка ( xi + 1, уi – 1 ) находится вне окружности, т. е. это случаи З и 4 на рис.2.6. В данной ситуации ясно, что должен быть выбран либо пиксел ( xi + 1, уi – 1 ), т. е. mD, либо ( xi, уi – 1 ), т. е. mV. Аналогично разбору предыдущего случая критерий выбора можно получить, рассматривая сначала случай З и проверяя разность между квадратами расстояний от окружности до диагонального mD и вертикального mV пикселов, т. е.

При d\ < 0 расстояние от окружности до вертикального пиксела ( xi, уi – 1 ) больше и следует выбрать диагональный шаг mD, к пикселу ( xi + 1, уi – 1 ). Напротив, в случае d\ > 0 расстояние от окружности до диагонального пиксела больше и следует выбрать вертикальное движение к пикселу ( xi, уi – 1 ). Таким образом,

при d £ 0 выбираем mD в ( xi + 1, уi – 1 )

при d < 0 выбираем mV в ( xi, уi – 1 )

Здесь в случае d = 0, т. е. когда расстояния равны, выбран диагональный шаг.

Проверка компонент d\ показывает, что

поскольку для случая З диагональный пиксел ( xi + 1, уi – 1 ) находится вне окружности, тогда как вертикальный пиксел ( xi, уi – 1 ) лежит внутри ее. Это позволяет записать d\ в виде

Дополнение до полного квадрата члена ( xi )2с помощью добавления и вычитания 2xi + 1 дает

Использование определения Di приводит выражение к виду

Теперь, рассматривая случай 4, снова заметим, что следует выбрать вертикальный пиксел ( xi, уi – 1 ), так как y является монотонно убывающей функцией при возрастании x. проверка компонент d\ для случая 4 показывает, что

поскольку оба пиксела находятся вне окружности. Следовательно, d\ > 0 и при использовании критерия, разработанного для случая 3, происходит верный выбор mV.

Осталось проверить только случай 5 на рис.2.7, который встречается, когда диагональный пиксел ( xi + 1, уi – 1 ) лежит на окружности, т. е. Di = 0. Проверка компонент d показывает, что

Следовательно, d > 0 и выбирается диагональный пиксел ( xi + 1, уi – 1 ). Аналогичным образом оцениваем компоненты d\:

и d < 0, что является условием выбора правильного диагонального шага к ( хi + 1, уi – 1 ). Таким образом, случай Di = 0 подчиняется тому же критерию, что и случай Di < 0 или Di > 0.

Подведем итог полученных результатов:

Di < 0

 d £ 0 выбираем пиксел ( хi + 1, уi ) ® mH

 d > 0 выбираем пиксел ( хi + 1, уi – 1 ) ® mD

Di > 0

 d\ £ 0 выбираем пиксел ( хi + 1, уi – 1 ) ® mD

 d\ > 0 выбираем пиксел ( хi , уi – 1 ) ® mV

Di = 0 выбираем пиксел ( хi + 1, уi – 1 ) ® mD

Легко разработать простые рекуррентные соотношения дня реализации пошагового алгоритма. Сначала рассмотрим горизонтальный шаг mH к пикселу ( хi + 1, уi ). Обозначим это новое положение пиксела как ( i + 1 ). Тогда координаты нового пиксела и значение Di равны

Аналогично координаты нового пиксела и значения Di для шага mD к пикселу ( хi + 1, уi – 1 ) таковы:

То же самое для шага mV к ( хi, уi – 1 )

Реализация алгоритма Брезенхема для окружности приводиться ниже.

Пошаговый алгоритм Брезенхема для генерации окружности в первом квадранте

 

все переменные целые

xi = 0

yi = R

Di = 2(1 – R)

Предел = 0

Plot ( xi, yi )

if yi £ Предел then 4

выделение случая 1 или 2, 4 или 5, или 3

if Di < 0 then 2

if Di > 0 then 3

if Di = 0 then 20

определение случая 1 или 2

d = 2Di + 2yi – 1

if d £ 0 then 10

if d > 0 then 20

определение случая 4 или 5

d = 2Di + 2xi – 1

if d £ 0 then 20

if d > 0 then 30

выполнение шагов

шаг mH

xi = xi +1

Di = Di +2xi + 1

goto 1

шаг mD

xi = xi +1

yi = yi – 1

Di = Di +2xi – 2yi + 2

goto 1

шаг mV

30yi = yi – 1

Di = Di – 2xi + 1

goto 1

4finish

Растровая развёртка сплошных областей

До сих пор речь шла о представлении на растровом графическом устройстве отрезков прямых линий. Однако одной из уникальных характеристик такого устройства является возможность представления сплошных областей. Генерацию сплошных областей из простых описаний ребер или вершин будем называть растровой разверткой сплошных областей, заполнением многоугольников или заполнением контуров. Для этого можно использовать несколько методов, которые обычно делятся на две широкие категории: растровая развертка и затравочное заполнение.

В методах растровой развертки пытаются определить в порядке

сканирования строк, лежит ли точка внутри многоугольника или контура. Эти алгоритмы обычно иду от “верха” многоугольника или контура к “низу”.

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

Растровая развёртка многоугольников

Можно разработать эффективный метод растровой развёртки многоугольников, если воспользоваться тем фактом, что соседние пикселы, вероятно, имеют одинаковые характеристики (кроме пикселов граничных рёбер). Это свойство называется пространственной когерентностью.

2.7 Растровая развёртка сплошной области

Характеристики пикселов на данной строке изменяются только там, где ребро многоугольника пересекает строку. Эти пересечения делят сканирующую строку на области.

Для простого многоугольника на рис. 2.7 строка 2 пересекает многоугольник при x = 1 и x = 8.

Получаем три области:

x < 1вне многоугольника

1 £ x £ 8внутри многоугольника

x > 8вне многоугольника

Строка 4 делится на пять областей:

x < 1вне многоугольника

1 £ x £ 4внутри многоугольника

4 < x < бвне многоугольника

б £ x £ 8внутри многоугольника

x > 8вне многоугольника

Совсем необязательно, чтобы точки пересечения для строки 4 сразу определялись в фиксированном порядке (слева направо). Например, если многоугольник задаётся списком вершин P1, P2, P3, P4, а список рёбер - последовательными парами вершин P1P2, P2P3, P3P4, P4P5, P5P1, то для строки 4 будут найдены следующие точки пересечения с рёбрами многоугольника: 8, 6, 4, 1. Эти точки надо отсортировать в возрастающем порядке по x, т. е. получить 1,4, 6, 8.

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


Информация о работе «Трёхмерная компьютерная графика»
Раздел: Информатика, программирование
Количество знаков с пробелами: 103587
Количество таблиц: 0
Количество изображений: 24

Похожие работы

Скачать
17177
0
0

... Разновидности компьютерной графики   Двумерная графика Двумерная компьютерная графика классифицируется по типу представления графической информации, и следующими из него алгоритмами обработки изображений. Обычно, компьютерную графику разделяют на: · векторную · растровую, · фрактальную Они отличаются принципами формирования изображения при отображении на экране монитора или при печати на ...

Скачать
20082
0
0

... в качестве реальной альтернативы системе Unix.  _ 23.Платформа Intel ПК с процессором Intel продолжает оставаться наиболее распространённой платформой в сфере компьютерной графики и анимации. Главным событием, имеющим к ней непосредственное отноше- ние, стала демонстрация компанией Autodesk четвёртой версии программы 3D Studio - ...

Скачать
29081
0
3

... простыми. Большинство цветовых оттенков образуется смешением основных цветов. Способ разделения цветового оттенка на составляющие компоненты называется цветовой моделью. Существует много различных типов цветовых моделей, но в компьютерной графике, как правило, применяется не более трех. Эти модели известны под названиями: RGB, CMYK, НSB. Цветовая модель RGB Наиболее проста для понимания и ...

Скачать
66016
2
0

... прочие). В соответствии с принципами формирования изображения аддитивным или субтрактивным методами разработаны способы разделения цветового оттенка на составляющие компоненты, называемые цветовыми моделями. В компьютерной графике в основном применяют модели RGB и HSB (для создания и обработки аддитивных изображений) и CMYK (для печати копии изображения на полиграфическом оборудовании). Цветовые ...

0 комментариев


Наверх