Реферат: Трёхмерная компьютерная графика
Как и в алгоритме Брезенхема для отрезка, для выбора соответствующего пиксела желательно использовать только знак ошибки, а не её величину.
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\ показывает, что