Хелпикс

Главная

Контакты

Случайная статья





Случай Dd < 0



 

 

Рис. 1: Варианты расположения очередного пиксела окружности

 

При генерации окружности по часовой стрелке после занесения точки (Xi, Yi) следующая точка может быть (см. рис. 0.1а) либо Pg = (Xi+1, Yi) - перемещение по горизонтали, либо Pd = (Xi+1, Yi-1) - перемещение по диагонали, либо Pv = (Xi, Yi-1) - перемещение по вертикали.

Для этих возможных точек вычислим и сравним абсолютные значения разностей квадратов расстояний от центра окружности до точки и окружности:

|Dg|

=

| (X+1)2

+

Y2

-

R2 |

|Dd|

=

| (X+1)2

+

(Y-1)2

-

R2 |

|Dv|

=

| X2

+

(Y-1)2

-

R2 |

Выбирается и заносится та точка, для которой это значение минимально.

Выбор способа расчета определяется по значению Dd. Если Dd < 0, то диагональная точка внутри окружности. Это варианты 1-3 (см. рис. 0.1б).

Если Dd > 0, то диагональная точка вне окружности. Это варианты 5-7.

И, наконец, если Dd = 0, то диагональная точка лежит точно на окружности. Это вариант 4.

Рассмотрим случаи различных значений Dd в только что приведенной последовательности.

Случай Dd < 0

Здесь в качестве следующего пиксела могут быть выбраны или горизонтальный - Pg или диагональный - Pd.

Для определения того, какой пиксел выбрать Pg или Pd составим разность:

di

=

|Dg| - |Dd| =

|(X+1)2 + Y2 - R2| - |(X+1)2 + (Y-1)2 - R2|

При di £ 0 будем выбирать точку Pg, в противном случае выберем Pd.

Рассмотрим вычисление di для разных вариантов.

Для вариантов 2 и 3:

Dg ³ 0 и Dd < 0, так как горизонтальный пиксел либо вне, либо на окружности, а диагональный внутри.

di = (X+1)2 + Y2 - R2 + (X+1)2 + (Y-1)2 - R2;

Добавив и вычтя (Y-1)2 получим:

di = 2 ·[(X+1)2 + (Y-1)2 - R2] + 2·Y - 1

В квадратных скобках стоит Dd, так что

di = 2 ·(Dd + Y) - 1

Для варианта 1:

Ясно, что должен быть выбран горизонтальный пиксел Pg. Проверка компонент di показывает, что Dg < 0 и Dd < 0, причем di < 0, так как диагональная точка больше удалена от окружности, т.е. по критерию di < 0 как и в предыдущих случаях следует выбрать горизонтальный пиксел Pg, что верно.



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.