Контрольная работа: Построение линии пересечения объёмных геометрических объектов
2.3 Аппроксимация кривой методом Фергюсона
Сегмент кривой может быть описан векторным уравнением:
r ( u )= a 3 u 3 + a 2 u 2 + a 1 u + a 0 , (1)
где r ( u ) - радиус-вектор текущей точки кривой :
u – параметр, 0<=u<=1;
a1 – векторы коэффициентов i=0..3.
уравнение (1) – представляет собой векторную форму записи системы:
x(u)=a13 u3 +a12 u2 +a11 u+a10 ;
y(u)=a23 u3 +a22 u2 +a21 u+a20 ; (2)
z ( u )= a 33 u 3 + a 32 u 2 + a 31 u + a 30 ;
Таким образом, для определения сегмента кривой необходимо знать 4 вектора или 12 коэффициентов. Обычно задаются значения r ( u ) и r ’( u ) на концах сегмента:
r(0)=a0 ;
r(1)=a3 +a2 +a1 +a0 ; (3)
r’(0)=a1 ;
r ’(1)=3 a 3 +2 a 2 + a 1 ;
Решив систему, уравнений относительно (3) a 0 , a 1 , a 2 , a 3 и подставив полученные значения в уравнение сегмента кривой в форме Фергюсона:
r ( u )= r (0)(1-3 u 2 +2 u 3 )+ r (1)(3 u 2 -2 u 3 )+ r ’(0)( u -2 u 2 + u 3 )+ r ’(1)( u 3 - u 2 ).
Однако в индивидуальном задании дано 6 точек и не указаны значения производных на концах отрезка – делаю вывод, что аппроксимацию необходимо проводить для сплайна степени 5 – так, как для построения сплайна степени n необходимо знать n +1 радиус-вектор.
Итак, уравнение сегмента проходящего через заданные точки в векторной форме:
r(u)=a5 u5 +a4 u4 + a3 u3 +a2 u2 +a1 u+a0 (4)
Система (2) запишется в следующем виде для плоского сплайна:
x(u)=a15 u5 +a14 u4 +a13 u3 +a12 u2 +a11 u+a10 ;
y(u)=a25 u5 +a24 u4 +a23 u3 +a22 u2 +a21 u+a20 ; (5)
Подставляя значения из заданной таблицы в систему (5) и решая её относительно коэффициентов a , получим шесть векторов входящих в уравнение кривой (4), которая проходит через шесть точек.
(6)
(7)
В результате решения системы (6) методом Гаусса получим:
a 15 =117,1875; a 14 =-255,208(3); a 13 =-621,3541(6); a 12 =563,958(3); a 11 =195,41(6); a 10 =49,0.
В результате решения системы (7) методом Гаусса получим: