Tj(uj) = a() + а | w + a2w2 + a3 iv3, w = -f ‘
... -h
Местный параметр w изменяется от 0 до 1. Векторы Aj,j = 0, 1, 2, 3, найдем из условий на границе участка кривой
г,(0) = р,; г,(1) = р,+1; r,'(0) = q,; г/(1) = q/+1.
После решения этой системы уравнений и подстановки значений а0, а,, а2, а3 получим зависимость радиуса-вектора для сплайна Эрмита
г(/) = р, (1 - 3w2 + 2w}) + p,+|(3w2 - 2«/) + q,(w - 2w2 + w')(tM - /,) +
+ q,+i(-^2 + w3)(thi - h) = a0(^)p, + «i(^)p,+i + Po(^)(^+i - Oq, +
+ Pi(^№+1 - ti)4M, w= ,t t‘t ■> (1-15)
{i+1 " 4
где tj < t < tM. В (1.15) введены обозначения для функций
a0(w) = 1 - 3w2 + hv3; оц(w) = 3w2 - 2иг", р0(и>) = w ~ 2и>2 + м’3;
Pi (и;) = -w2 + w3.
Сплайн Эрмита можно строить в отсутствие производных в контрольных точках. Если производные q, неизвестны, то их можно вычислить, построив векторный полином Лагранжа второй степени по трем соседним точкам р,_|, р„ р,+|
(/) (t — tj)
1-t,)(,ti-i-tM) ' (tl-t,.i){tl-tM) ,+l (tM-t,_x)(tM ~*i) и взяв в качестве q, его производную при t = t(
q _ р 1 + p 2?< ~fj+1 + p tj-tj-1
Производные на краях сплайна можно получить из условия, что в этих точках обращаются в нуль вторые производные радиуса-вектора. Для этого вычислим по (1.15) вторые производные для соответствующих участков и подставим в них соответствующие значения параметра, в результате получим
„ _3р, -р0 1 _ з р„-р„„, 1 2 /i~r0 З4"4--2,24-"
На рис. 1.7 приведен составной сплайн Эрмита третьей степени, построенный данным способом, изменение узловых значений параметра которого пропорционально расстоянию между соседними контрольными точками; штриховой линией показан составной сплайн Эрмита третьей степени с равномерной параметризацией (?, = /).
Составной сплайн Эрмита дает приемлемую аппроксимацию и требует меньше вычислений, чем рассмотренные ранее сплайны. Вторые производные в контрольных точках составного сплайна Эрмита в общем случае не сохраняют непрерывность
.
Рис. 1.7
На рис. 1.8 приведены: сплайн Лагранжа (/), кубический сплайн (2) и составной сплайн Эрмита (3), построенные по одним и тем же данным. Видим, что сплайны ведут себя по-разному. Сплайны Эрмита и кубические сплайны строятся для аппроксимации. Для эргономических целей используются кривые, которые будут рассмотрены далее.
Кривые Безье
Де Кастелье (De Casteljau F.) и независимо от него Безье (Bezier Р.) предложили строить кривые, каждая точка которых вычисляется как взвешенная сумма заданных контрольных точек р„ i = 0, 1, ..., п. Эти кривые получили название кривых Безье
.
Кривая Безье первой степени (я = 1) представляет собой отрезок
г (0 = (1 —/)Р0 + ГР|.
Радиус-вектор кривой Безье второй степени (п = 2) описывается зависимостью
Рис. 1.9 ГМ = О ~ f)2Po + 2/(1 - OPi + t2Р2
Радиус-вектор кубической кривой Безье (и = 3) описывается зависимостью
г(/) = (1 - /)3р0 + 3/(1 - /)2р, + 3/2(1 - /)р2 + ^Pj.
На рис. 1.9 приведены кубическая кривая Безье и ломаная линия, построенные по одним и тем же контрольным точкам.
Кривая Безье в общем случае описывается формулой
" " _л!_
S” ы!/!(«-/)! ’
По точкам р, строится контрольная ломаная кривой Безье. На рис. 1.10 приведена кривая Безье, построенная по восьми точкам, и ее контрольная ломаная.
Область изменения параметра кривой Безье любой степени принадлежит единичному отрезку: 0 < / < 1. Кривая Безье не проходит через свои контрольные точки, за исключением крайних точек. Контрольная ломаная касается кривой Безье в крайних точках. Гладкость кривой Безье определяется числом точек. Путем перемещения одной или нескольких контрольных точек кривой Безье можно придать желаемую форму.
Форрест (Forrest A. R.) установил связь между коэффициентами при контрольных точках кривой Безье и полиномами Бернштейна. Коэффициентами при контрольных точках кривой Безье являются функции Бернштейна
Д"(0= .„”Ч,/'(1 -/)"-'• (1-17)
Совокупность функций Бернштейна для некоторого заданного п называется базисом Бернштейна. Коэффициенты при /'(1 - /)"'' в
■
(1.17) равны коэффициентам С‘ = :— бинома Ньютона: (а + Ь)" =
/!(«-/)!
П
= ’^С‘пап~'Ь'. Из этого следует, что базис Бернштейна представляет собой
1=0
разложение единицы
£ Д/Ч/) = (/ + (1 -/))” = Iя = 1. (1.18)
/-о
На рис. 1.11 и 1.12 приведены базисы Бернштейна третьей и четвертой степени соответственно
.
Рис. 1.12
Из полиномов Бернштейна только нулевой и последний принимают максимально возможные значения 50"(0) = 1, Вп„( 1) = 1, поэтому кривая Безье проходит только через начальную р0 и конечную р„ точки.
Функции Бернштейна удовлетворяют рекуррентному соотношению
В "(f) = tB"S\(t) + (\-t) Br\t). (1.19)
Это соотношение доказывается непосредственной подстановкой:
+ (1 - t)Br\t) =
' «! . n-i г'
t‘(l-t)"-‘ = В? (t).
ni\(n-i)\ n i\(n-i)\
Используя это рекуррентное соотношение, можно вычислить все функции Бернштейна. Вычисление начнем с функции В 11(f) = 1, далее получим Вl(t) = t, B$(t) = 1 - ..., BS(t) = (1 - t)", B"(t) = tn. При вычислении считается, что функции, один из индексов которых равен отрицательному числу, равны нулю.
Подставим рекуррентное соотношение (1.19) в выражение (1.16), выделив крайние точки и учитывая, что Bft(t) = (1 - t)n, B"(t) = t", получимr(0 = p0(l -/)" + рлГл + (t) + (1 - t)BFl (0)p, =
n-\
n-1
= (1 - r)X B,*-' (»p, + f X ВГ' Wp,tl =
= (1 - f)rjrl\f) +
n-\
/=0
Продолжив описанный процесс разложения для г0(л '* и г(" в итоге придем к равенствам
r/°> = £ B§(t)р,- = р„ / = 0, 1, ..., п.
Обозначив г (г) через r0(0- а Р, — через г/0), получим рекуррентное соотношение для вычисления точки кривой Безье на к-й итерации рекурсии
г;(А:) = (1 - /)г/* 11 + /г/*! l), i + к < п.
Алгоритм, описываемый соотношением (1.20), называется алгоритмом Де Кастелье. Алгоритм Де Кастелье позволяет вычислить любую точку кривой Безье по контрольным точкам, ничего не зная о функциях Бернштейна. Кривую Безье можно определить как линию, точки которой определяются рекуррентным соотношением (1.20).
Проиллюстрируем алгоритм Кастелье на примере квадратичной кривой Безье (рис. 1.13).
Точка с произвольным параметром 1 квадратичной кривой Безье обладает тем свойством, что касательная в ней делит векторы р, - р0
и р2 - р, в отношении -—Это следует из записи кривой Безье второй степени в виде
Do'stlaringiz bilan baham: |