II. Изображение эллипсов и других кривых второго порядка.

 


Рис. 5. Изображение эллипса.

Прежде всего, отметим, что у эллипса, в отличие от окружности, всего 2 оси симметрии, поэтому по точкам придется строить уже 2 октанта. (см. Рис. 5)

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

Неявная функция, задающая эллипс, имеет вид:

, a>b Û b2*x2 + a2*y2 - a2*b2 =0

Введем f(x,y)= b2*x2 + a2*y2 - a2*b2


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

 

2) Воспользуемся тем, что эллипс с параметрами a,b; a > b получается из окружности радиуса aсжатием по оси y в a/b раз. Построим алгоритм, который является некой комбинацией алгоритмов Брезенхема для окружности и для отрезка.

 

Рис. 6. Построение эллипса путем сжатия окружности. Начнем из точки (a,0) на окружности и из точки (0,0) на отрезке. Будем строить эллипс точно также как окружность, но смещать текущую точку по y только в том случае, когда такое смещение происходит в текущем шаге уже для отрезка, т.е. построение отрезка как раз и является реализацией сжатия в a/b раз (точнее, его дискретной аппроксимацией). Этот алгоритм тоже имеет недостаток: возможная смешанная связность полученной линии (Рис. 7).   Рис. 7. Смешанная связность.