Example. Точная аппроксимация конических кривых рациональными b-сплайновыми кривыми

Алгоритм точной аппроксимации представляет последовательность следующих процедур:

1) На опорной ломаной, снятой с окружности,  строится v-кривая, которая аппроксимируется кубической NURBzS кривой (геометрической сплайновой кривой Безье) (рис. 1, 2).

        

 

Рис. 1.  Web-приложение строит v-кривую и аппроксимирует ее  кубической NURBzS кривой. На экране отображаются графики кривой (красного цвета), кривизны над кривой (зеленого цвета), кривизны вида F(x)(красного цвета), управляющий полигон (голубого цвета).

Рис. 2. Конвертирование NURBzS кривой в рациональную b-сплайновую кривую.

 

2) Проверяется тождественность смежных дуг множества конических кривых двойного соприкосновения v-кривой одной конической кривой  по значениям инженерного дискриминанта на общем участке между точками соприкосновения.

 3) В случае совпадения всех дуг одной конической кривой  переход к следующему пункту. В противном случае выход (кривая не коническая кривая).

4) Коническая кривая аффинно преобразуется в окружность единичного радиуса.

5) На основе эталонной рациональной кривой  Безье 5-ой степени [6] с вершинами b-полигона (0,0), (4,0), (2,4), (-2,4),(-4,0), (0,0)  и весами w0 = w5 = 1 and w1 = w2 = w3 = w4 = 1/5  на отрезке 0 < t < 1, геометрически точно представляющей окружность, и по распределению точек исходной ломаной на окружности формируется вектор узлов.

6) На основе сформированного вектора узлов формируется реальная рациональная сплайновая кривая Безье 5-ой степени на единичной окружности. Используется алгоритм разбиения дуги рациональной кривой Безье на две дуги [7].

6) После последовательного разбиения дуги в соответствии с вектором узлов эталонная рациональная кривая  Безье 5-ой степени  преобразуется в реальную рациональную сплайновую кривую Безье 5-ой степени.

7) Обратным аффинным преобразованием NURBzS кривая на единичной окружности переводится в NURBzS кривую – коническую кривую на исходной опорной ломаной.

8) Поднимается степень NURBzS кривой (до 10-ой) с использованием алгоритма повышения степени дуги рациональной кривой Безье [7].

9) Реальная рациональная сплайновая кривая Безье с помощью BS-алгоритма [2] преобразуется в рациональную b-сплайновую кривую (рис.  2), совпадающую с конической кривой (в данном случае с окружностью, на рис. 1, 2 функция графика кривизны представляет горизонтальную линию).