TEMATYKA: Krzywe typu Splajn (Krzywe B sklejane) Ćwiczenia nr 8 Krzywe Bezier a mają istotne ograniczenie. Aby uzyskać kształt zawierający wiele punktów przegięcia niezbędna jest krzywa wysokiego stopnia. Takie krzywe są trudne do kształtowania. Z kolei najczęściej stosowane krzywe Bezier a 2-go i 3-go stopnia trzeba łączyć, aby uzyskać bardziej skomplikowany kształt. Kontrolowanie kształtu w miejscach łączenia także jest trudne. Dlatego zaproponowano krzywe sklejane krzywe typu splajn. Kształt takiej krzywej jest ustalany przez łamaną składającą się z punktów kontrolnych. Definicja krzywej typu splajn musi zawierać dodatkową strukturę, nazwaną wektorem węzłów, która określa miejsca łączenia segmentów Bezier a. Węzeł to wartość parametru, w którym następuje łączenie sąsiednich segmentów Bezier a. Liczba węzłów zależy od stopnia krzywej splajn i liczby punktów kontrolnych. Ze względów obliczeniowych wektor węzłów zawiera na początku i końcu powtarzające się wartości. DEFINICJE: Krzywa splajn: Krzywa stopnia p 1 jest opisana następującym równaniem parametrycznym: n C p (u) = N i,p (u) P i i= dla a u b, gdzie P i to zbiór n + 1 punktów kontrolnych, a N i,p (u) jest funkcją bazową splajnu określoną na wektorze węzłów U = {u,, u p, u p+1,, u m p, u m p+1,, u m }, który składa się z m + 1 uporządkowanych niemalejąco liczb nieujemnych. Pomiędzy p, n i m zachodzi następująca zależność: m = n + p + 1 Funkcja bazowa splajnu jest określona rekurencyjnie: N i,p (u) = N i, (u) = { 1 dla u i u < u i+1 u u i u i+p u i,p 1 (u) + u i+p+1 u i u i+p+1 u i+1,p 1 (u) i+1 Krzywa splajn jest krzywą sklejaną składającą się z segmentów Bezier a. Jeśli n = p, to splajn składa się z jednego segmentu Bezier a stopnia p. Jeżeli n > p, to splajn składa się z n p + 1 segmentów Beziera a stopnia p. Funkcja bazowa splajnu jest odpowiednikiem wielomianu Bernstein a stosowanego w krzywych Bezier a. W przypadku jednosegmentowych splajnów określonych na parametrze w zakresie od do 1, funkcje bazowe zmieniają się w wielomiany Bernstein a. 1
ZADANIA: 1. Pokaż, że jednosegmentowy splajn 2 go stopnia to krzywa Bezier a. 2. Oblicz C 2 (u = 1.4) i C 2 (u = 3.7) dla splajnu 2 go stopnia (p = 2) określonego dla ośmiu punktów kontrolnych P, P 1, P 2, P 3, P 4, P 5, P 6, P 7 (n = 7) i wektora węzłów: U={,,, 1, 2, 3, 4, 4, 5, 5, 5}. 2
ROZWIĄZANIA ZADAŃ: 1. Pokaż, że jednosegmentowy splajn 2 go stopnia to krzywa Bezier a. Rys. 8.1 Aby to zrobić, należy obliczyć funkcje bazowe dla splajnu 2 go stopnia (p = 2) określonego na trzech punktach kontrolnych P, P 1, P 2 (n = 2) dla u 1. W takim przypadku wektor węzłów będzie miał 6 elementów. Ostatni element wektora węzłów będzie miał indeks m = 5 p = 2 stopień krzywej typu splajn, n = 2 (n + 1) liczba punktów kontrolnych m = n + p + 1 = 2 + 2 + 1 = 5 indeks ostatniego elementu w wektorze U Definicja wektora węzłów: U = {u,, u p, u p+1,, u m p, u m p+1,, u m } U = {u =, u 1 =, u 2 =, u 3 = 1, u 4 = 1, u 5 = 1} (1) p + 1 = 2 + 1 = 3 p + 1 = 2 + 1 = 3 To jest definicja i zależność do nauczenia się lub zapamiętania. 3
Stąd można obliczyć: u 1 (2) N i, (u) = { 1 dla u i u < u i+1 (3) N i,p (u) = u u i u i+p u i,p 1 (u) + u i+p+1 u i u i+p+1 u i+1,p 1 (u) i+1 (4) Dla i = i p = (1), (2) i (3): N i=,p= (u) = { 1 dla u = u < u +1=1 = N, = dla < u < + Dla i = 1 i p = (1), (2) i (3) N i=1,p= (u) = { 1 dla u 1 = u < u 1+1=2 = N 1, = dla < u < + Dla i = 2 i p = (1), (2) i (3): N i=2,p= (u) = { 1 dla u 2 = u < u 2+1=3 = 1 N 2, = { 1 dla u < 1 pozostałych "u" Dla i = 3 i p = (1), (2) i (3): N i=3,p= (u) = { 1 dla u 3 = 1 u < u 3+1=4 = 1 N 3, = dla < u < + Dla i = 4 i p = (1), (2) i (3): N i=4,p= (u) = { 1 dla u 4 = 1 u < u 4+1=5 = 1 N 4, = dla < u < + UWAGA: Symbol: jest nieoznaczony. Należy przyjąć, że nie istnieje, czyli w ujęciu komputerowym =. 4
Dla i = i p = 1 (1), (2) i (4): N i=,p=1 (u) = u u u +1=1 u,1 1= (u) + u +1+1=2 u u +1+1=2 u +1=1,1 1= (u) +1=1 N,1 = u u, + 1, = dla < u < + (ponieważ wyznaczone na podstawie N, i N 1, ) Dla i = 1 i p = 1 (1), (2) i (4): N i=1,p=1 (u) = u u 1 u 1+1=2 u 1,1 1= (u) + u 1+1+1=3 u 1 u 1+1+1=3 u 1+1=2,1 1= (u) 1+1=2 N 1,1 = u 1, + 1 u 1 u 1 2, = { u < 1 (ponieważ wyznaczone na podstawie N 1, i N 2, ) Dla i = 2 i p = 1 (1), (2) i (4): N i=2,p=1 (u) = u u 2 u 2+1=3 u 2,1 1= (u) + u 2+1+1=4 u 2 u 2+1+1=4 u 2+1=3,1 1= (u) 2+1=3 N 2,1 = u 1 2, + 1 u 1 1 3, = { u u < 1 (ponieważ wyznaczone na podstawie N 2, i N 3, ) Dla i = 3 i p = 1 (1), (2) i (4): N i=3,p=1 (u) = u u 3 u 3+1=4 u 3,1 1= (u) + u 3+1+1=5 u 3 u 3+1+1=5 u 3+1=4,1 1= (u) 3+1=4 N 3,1 = u 1 1 1 1 u 3, + 1 1 4, = dla < u < + (ponieważ wyznaczone na podstawie N 3, i N 4, ) 5
Dla i = i p = 2 (1), (2) i (4): N i=,p=2 (u) = u u u +2=2 u,2 1=1 (u) + u +2+1=3 u u +2+1=3 u +1=1,2 1=1 (u) +1=1 N,2 = u,1 + 1 u (1 1 1,1 = { u) (1 u) u < 1 (ponieważ wyznaczone na podstawie N,1 i N 1,1 ) Dla i = 1 i p = 2 (1), (2) i (4): N i=1,p=2 (u) = u u 1 u 1+2=3 u 1,2 1=1 (u) + u 1+2+1=4 u 1 u 1+2+1=4 u 1+1=2,2 1=1 (u) 1+1=2 N 1,2 = u 1 1 u 1,1 + 1 2,1 = u 1,1 + (1 u) 2,1 = 1 u = u { + (1 u) {u = { u u2 + u u 2 u + (1 u) = {2u (1 u) (ponieważ wyznaczone na podstawie N 1,1 i N 2,1 ) u < 1 Dla i = 2 i p = 2 (1), (2) i (4): N i=2,p=2 (u) = u u 2 u 2+2=4 u 2,2 1=1 (u) + u 2+2+1=5 u 2 u 2+2+1=5 u 2+1=3,2 1=1 (u) 2+1=3 N 2,2 = u 1 2,1 + 1 u 1 1 3,1 = { u u = u2 u < 1 (ponieważ wyznaczone na podstawie N 2,1 i N 3,1 ) Funkcje N,2, N 1,2 i N 2,2 to wielomiany Bernstein a 2 go stopnia określone dla u 1. Zatem dowolny punkt splajnu będzie określony wzorem: n C p (u) = N i,p (u) P i i= dla a u b, C p=2 (u) = N i=,p=2 P i= + N i=1,p=2 P i=1 + N i=2,p=2 P i=2 C p=2 (u) = (1 u) 2 P + 2 u (1 u) P 1 + u 2 P 2 jak dla krzywej Bezier a. 6
Pytanie: O co w tym wszystkim chodzi? I czemu służą takie karkołomne obliczenia? Odp.: Wyznaczeniu współrzędnych dowolnego punktu należącego do splajnu, który jak się okazuje, jest zbiorem krzywych Bezier a. p = 2 stopień krzywej typu splajn, n = 2 (n + 1) liczba punktów kontrolnych m = n + p + 1 = 2 + 2 + 1 = 5 indeks ostatniego elementu w wektorze U u = 1 ilość segmentów P x = ; y = ; P 1 x 1 = 2.62; y 1 = 24.61; P 2 x 2 = 61.14; y 2 = -1.66; Wykorzystując wzór: C p=2 (u) = (1 u) 2 P + 2 u (1 u) P 1 + u 2 P 2 możemy zapisać: x p=2 (u = 1 2 ) = (1 1 2 2 ) (x = ) + 2 1 2 (1 1 2 ) (x 1 = 2. 62) + ( 1 2 2 ) (x 2 = 61. 14) =. 25 + 1. 5 2. 62 +. 25 61. 14 = 1. 31 + 15. 285 = 25. 595 y p=2 (u = 1 2 ) = (1 1 2 2 ) (y = ) + 2 1 2 (1 1 2 ) (y 1 = 24. 61) + ( 1 2 2 ) (y 2 = 1. 66) =. 25 + 1. 5 24. 61 +. 25 ( 1. 66) = 12. 35. 415 = 11. 89 Wniosek: Jeśli n = p, to splajn składa się z jednego segmentu Bezier a stopnia p. 7
Dowód (wyprowadzenie wzoru na krzywą Bezier a drugiego stopnia n = 2): W tym zadaniu krzywa Bézier a to wielomian drugiego stopnia. Jak wszystkie wielomiany drugiego stopnia, krzywą Bézier a jednoznacznie określają trzy punkty, które nazwano p (punkt początkowy), p 1 (punkt kontrolny) i p 2 (punkt końcowy). Te trzy punkty można również oznaczyć, jako (x, y, z ), (x 1, y 1, z 1 ), (x 2, y 2, z 2 ). Ogólna, parametryczna postać wielomianu drugiego stopnia trzech zmiennych to: x(t) = a x t 2 + b x t + c x y(t) = a y t 2 + b y t + c y a x, b x, c x, a y, b y, c y, a z, b z, c z, wielkości stałe t przybiera wartości od do 1 z(t) = a z t 2 + b z t + c z Krzywa Bézier a jest jednoznacznie określona przez te dziewięć stałych. Wartości stałych zależą od trzech punktów definiujących krzywą. Pierwsze założenie jest takie, że krzywa Bézier a zaczyna się w punkcie (x, y, z ), gdy t jest równe : x(t = ) = a x t 2 + b x t + c x = c x = x y(t = ) = a y t 2 + b y t + c y = c y = y z(t = ) = a z t 2 + b z t + c z = c z = z Drugie założenie związane z krzywą Bézier a jest takie, że kończy się ona w punkcie (x 2, y 2, z 2 ), gdy t jest równe 1: x(t = 1) = a x 1 2 + b x 1 + c x = a x + b x + c x = x 2 y(t = 1) = a y 1 2 + b y 1 + c y = a y + b y + c y = y 2 z(t = 1) = a z 1 2 + b z 1 + c z = a z + b z + c z = z 2 Pozostałe dwa założenia dotyczą pierwszych pochodnych równań parametrycznych, które opisują nachylenie krzywej. Pierwsze pochodne uogólnionych równań parametrycznych wielomianu drugiego stopnia liczone względem t to: x (t) = 2 a x t + 1 b x y (t) = 2 a y t + 1 b y z (t) = 2 a z t + 1 b z 8
W punkcie początkowym krzywa Bézier a jest styczna do linii biegnącej od punktu początkowego do pierwszego punktu kontrolnego i ma ten sam kierunek. Tę linię prostą zwykle definiowałoby równanie parametryczne: x(t) = (x 1 x ) t + x y(t) = (y 1 y ) t + y z(t) = (z 1 z ) t + z Dla t z zakresu od do 1. Jednakże inną reprezentacją tej linii prostej mogą być poniższe równania parametryczne: x(t) = 2 (x 1 x ) t + x y(t) = 2 (y 1 y ) t + y z(t) = 2 (z 1 z ) t + z gdzie t przybiera wartości od do 1/2. Dlaczego 1/2? Ponieważ fragment krzywej Bézier a, który jest styczny do linii prostej od p do p 1 i ma ten sam kierunek, to mniej więcej 1/2 całej krzywej. Oto pierwsze pochodne tych zmodyfikowanych równań parametrycznych: x (t) = 2 (x 1 x ) y (t) = 2 (y 1 y ) z (t) = 2 (z 1 z ) Równania te reprezentują nachylenie krzywej Bézier a, gdy t jest równe zeru, a zatem: x (t = ) = 2 a x + 1 b x = b x = 2 (x 1 x ) y (t = ) = 2 a y + 1 b y = b y = 2 (y 1 y ) z (t = ) = 2 a z + 1 b z = b z = 2 (z 1 z ) Ostatnie założenie jest takie, że w punkcie końcowym krzywa Bézier a jest styczna do linii prostej biegnącej od pierwszego punktu kontrolnego do punktu końcowego i ma taki sam kierunek: x (t = 1) = 2 a x 1 2 + 1 b x = 2 a x + 1 b x = 2 (x 1 x ) y (t = 1) = 2 a y 1 2 + 1 b y = 2 a y + 1 b y = 2 (y 1 y ) z (t = 1) = 2 a z 1 2 + 1 b z = 2 a z + 1 b z = 2 (z 1 z ) 9
Powstał układ czterech równań z trzema niewiadomymi: c x = x a x = x 2 2 x 1 + x a x + b x + c x = x 2 b { b x = 2 (x 1 x ) { x = 2 x 1 2 x c x = x 2 a x + 1 b x = 2 (x 2 x 1 ) a x = x 2 2 x 1 + x c y = y a y = y 2 2 y 1 + y a y + b y + c y = y 2 b b y = 2 (y 1 y ) y = 2 y 1 2 y c y = y { 2 a y + 1 b y = 2 (y 2 y 1 ) { a y = y 2 2 y 1 + y c z = z a z = z 2 2 z 1 + z a z + b z + c z = z 2 b b z = 2 (z 1 z ) { z = 2 z 1 2 z c z = z 2 a z + 1 b z = 2 (z 2 z 1 ) a z = z 2 2 z 1 + z Podstawiając stałe do uogólnionych równań parametrycznych drugiego stopnia otrzymano: x(t) = (x 2 2 x 1 + x ) t 2 + (2 x 1 2 x ) t + x y(t) = (y 2 2 y 1 + y ) t 2 + (2 y 1 2 y ) t + y z(t) = (z 2 2 z 1 + z ) t 2 + (2 z 1 2 z ) t + z Po uporządkowaniu zapis wielomianowy: x(t) = (t 1) 2 x + 2 t (1 t) x 1 + t 2 x 2 y(t) = (t 1) 2 y + 2 t (1 t) y 1 + t 2 y 2 z(t) = (t 1) 2 z + 2 t (1 t) z 1 + t 2 z 2 W postaci macierzowej: 1 2 1 x(t) = [x x 1 x 2 ] [ 2 2 ] [t 2 t ] 1 1 1 2 1 y(t) = [y y 1 y 2 ] [ 2 2 ] [t 2 t ] 1 1 1 2 1 x(t) = [z z 1 z 2 ] [ 2 2 ] [t 2 t ] 1 1 { t 1 1
P x = ; y = ; P 1 x 1 = 2.62; y 1 = 24.61; P 2 x 2 = 61.14; y 2 = -1.66; x (u = 1 2 ) = [ 2. 62 1 2 1 (. 5) 2 61. 14] [ 2 2 ] [. 5 ] 1 1 1. 25 2. 5 + 1 1 =. 5 = [ 2. 62 2. 25 + 2. 5 + 1 =. 5] 1. 25 +. 5 + 1 =. 25 61. 14] [ = [. 5 + 2. 62. 5 + 61. 14. 25] = 25. 595 x (u = 1 2 ) = [ 24. 61 1 2 1 (. 5) 2 1. 66] [ 2 2 ] [. 5 ] 1 1 1. 25 2. 5 + 1 1 =. 5 = [ 24. 61 1. 66] [ 2. 25 + 2. 5 + 1 =. 5] 1. 25 +. 5 + 1 =. 25 = [. 5 + 24. 61. 5 1. 66. 25] = 11. 89 11
2. Oblicz C 2 (u = 1.4) i C 2 (u = 3.7) dla splajnu 2 go stopnia (p = 2) określonego dla ośmiu punktów kontrolnych P, P 1, P 2, P 3, P 4, P 5, P 6, P 7 (n = 7) dla u 5. Rys. 8.2 W takim przypadku wektor węzłów będzie miał 11 elementów. Ostatni element wektora węzłów będzie miał indeks m = n + p + 1 = 7 + 2 + 1 = 1. Definicja wektora węzłów: U = {u,, u p, u p+1,, u m p, u m p+1,, u m } U = {u =, u 1 =, u 2 =, u 3 = 1, u 4 = 2, u 5 = 3, u 6 = 4, u 7 = 4, u 8 = 5, u 9 = 5, u 1 = 5} p + 1 = 2 + 1 = 3 p + 1 = 2 + 1 = 3 (te składowe wynikają z definicji) (te składowe wynikają z definicji) u 6 = u 7 = 4 ponieważ jest węzeł, w którym kończy się segment 4 i zaczyna się segment 5. Ponadto wiadomo, iż stopień krzywej jest p = 2 (czyli jest to zbiór parabol). 12
W punkcie P 5 pierwsza pochodna takiej paraboli jest ciągła, natomiast druga pochodna już nie. Występuje tzw. szpic. Inne przykłady krzywych i budowania wektora węzłów (aby zrozumieć jak to działa ): Jest to krzywa Bezier a, dla której p = 3 (ponieważ są określone 4 punkty kontrolne). W takim przypadku wektor węzłowy przyjmuje postać: u 1 p = 3 stopień krzywej n = 3 ilość punktów kontrolnych pomniejszona o 1 m = n + p + 1 = 3 + 3 + 1 = 7 indeks ostatniego elementu, których będzie m + 1 = 8 U = {u =, u 1 =, u 2 =, u 3 =, u 4 = 1, u 5 = 1, u 6 = 1, u 7 = 1} p + 1 = 3 + 1 = 4 p + 1 = 3 + 1 = 4 13
Jest to krzywa typu splajn, dla której p = 3 (ponieważ są określone 4 punkty kontrolne dla każdego segmentu. Segment 1 to punkty: P, P 1, P 2, i P 3 ; Segment 2 to punkty: P 3, P 4, P 5, P 6 ). W takim przypadku wektor węzłowy przyjmuje postać: u 1 p = 3 stopień krzywej n = 6 ilość punktów kontrolnych pomniejszona o 1 m = n + p + 1 = 6 + 3 + 1 = 1 indeks ostatniego elementu, których będzie m + 1 = 11 U = {u =, u 1 =, u 2 =, u 3 =, u 4 = 1 4, u 5 = 1 2, u 6 = 3 4, u 7 = 1, u 8 = 1, u 9 = 1, u 1 = 1} p + 1 = 3 + 1 = 4 p + 1 = 3 + 1 = 4 Czarne punkty (węzły) dzielą krzywą na 4 części. Stąd właśnie wzięły się składowe wektora U po 1/4; 1/2; 3/4. 14
Jest to krzywa typu splajn, dla której p = 2 (ponieważ są określone 3 punkty kontrolne dla każdego segmentu. W takim przypadku wektor węzłowy przyjmuje postać: u 1 p = 2 stopień krzywej n = 6 ilość punktów kontrolnych pomniejszona o 1 m = n + p + 1 = 6 + 2 + 1 = 9 indeks ostatniego elementu, których będzie m + 1 = 1 U = {u =, u 1 =, u 2 =, u 3 = 1 5, u 4 = 2 5, u 5 = 3 5, u 6 = 4 5, u 7 = 1, u 8 = 1, u 9 = 1} p + 1 = 2 + 1 = 3 p + 1 = 2 + 1 = 3 Czarne punkty (węzły) dzielą krzywą na 5 części. Stąd właśnie wzięły się składowe wektora U po 1/5; 2/5; 3/5 i 4/5. 15
Jest to krzywa typu splajn, dla której p = 3 (ponieważ są określone 4 punkty kontrolne dla każdego segmentu. W takim przypadku wektor węzłowy przyjmuje postać: u 1 p = 3 stopień krzywej n = 6 ilość punktów kontrolnych pomniejszona o 1 m = n + p + 1 = 6 + 3 + 1 = 1 indeks ostatniego elementu, których będzie m + 1 = 11 U = {u =, u 1 =, u 2 =, u 3 =, u 4 = 1 4, u 5 = 1 2, u 6 = 3 4, u 7 = 1, u 8 = 1, u 9 = 1, u 1 = 1} p + 1 = 3 + 1 = 4 p + 1 = 3 + 1 = 4 Czarne punkty (węzły) dzielą krzywą na 4 części. Stąd właśnie wzięły się składowe wektora U po 1/4; 1/2; 3/4. 16
Jest to krzywa typu splajn, dla której p = 2 (ponieważ są określone 3 punkty kontrolne dla każdego segmentu. W takim przypadku wektor węzłowy przyjmuje postać: u 1 p = 2 stopień krzywej n = 9 ilość punktów kontrolnych pomniejszona o 1 m = n + p + 1 = 9 + 2 + 1 = 12 indeks ostatniego elementu, których będzie m + 1 = 13 U = {u =, u 1 =, u 2 =, u 3 = 1 8, u 4 = 2 8, u 5 = 3 8, u 6 = 4 8, u 7 = 5 8, u 8 = 6 8, u 9 = 7 8, u 1 = 1, u 11 = 1, u 12 = 1} p + 1 = 2 + 1 = 3 p + 1 = 2 + 1 = 3 Czarne punkty (węzły znajdują się między punktami P 1 i P 2 ; P 2 i P 3 ; P 3 i P 4 ; P 4 i P 5 ; P 5 i P 6 ; P 6 i P 7 oraz P 7 i P 8 ) dzielą krzywą na 8 części. Stąd właśnie wzięły się składowe wektora U po 1/8; 2/8; 3/8; 4/8; 5/8; 6/8; 7/8. 17
Jest to krzywa typu splajn, dla której p = 2 (ponieważ są określone 3 punkty kontrolne dla każdego segmentu. W takim przypadku wektor węzłowy przyjmuje postać: u 1 p = 2 stopień krzywej n = 5 ilość punktów kontrolnych pomniejszona o 1 m = n + p + 1 = 5 + 2 + 1 = 8 indeks ostatniego elementu, których będzie m + 1 = 9 U = {u =, u 1 =, u 2 =, u 3 = 1 4, u 4 = 1 2, u 5 = 3 4, u 6 = 1, u 7 = 1, u 8 = 1} p + 1 = 2 + 1 = 3 p + 1 = 2 + 1 = 3 Czarne punkty (węzły) dzielą krzywą na 4 części. Stąd właśnie wzięły się składowe wektora U po 1/4; 1/2; 3/4. 18
Jest to krzywa typu splajn, dla której p = 3 (ponieważ są określone 4 punkty kontrolne dla każdego segmentu. W takim przypadku wektor węzłowy przyjmuje postać: u 1 p = 3 stopień krzywej n = 5 ilość punktów kontrolnych pomniejszona o 1 m = n + p + 1 = 5 + 3 + 1 = 9 indeks ostatniego elementu, których będzie m + 1 = 1 U = {u =, u 1 =, u 2 =, u 3 =, u 4 = 1 2, u 5 = 1 2, u 6 = 1, u 7 = 1, u 8 = 1, u 9 = 1} p + 1 = 3 + 1 = 4 p + 1 = 3 + 1 = 4 Czarny punkt (węzeł) dzieli krzywą na 2 części. Stąd właśnie wzięły się składowe wektora U po 1/2 podwójnie ponieważ jest to część wspólna dla obu segmentów. Wracając do rozwiązania: W zadaniu nr 1 pokazano szczegółowo, skąd biorą się odpowiednie symbole N i,p. Dlatego w dalszej część rozwiązania będą już podane tylko wynikowe wzory, które bazują na definicji: n C p (u) = N i,p (u) P i i= dla a u b, N i,p (u) = N i, (u) = { 1 dla u i u < u i+1 u u i u i+p u i,p 1 (u) + u i+p+1 u i u i+p+1 u i+1,p 1 (u) i+1 19
Uwaga: p zmienia się (, 1, 2) oraz i zmienia się właściwie (od do 9) ponieważ, żeby wyznaczyć N 7,2 trzeba znać N 8,1, a żeby wyznaczyć N 8,1, trzeba wcześniej wyliczyć N 8, i N 9,. Chociaż generalnie i zmienia się od do n, a więc: N, = N 1, = < u < + N 2, = { 1 N 3, = { 1 N 4, = { 1 N 5, = { 1 u < 1 1 u < 2 2 u < 3 3 u < 4 N 6, = < u < + N 7, = { 1 4 u < 5 N 8, = N 9, = < u < + N,1 = u, + u 1, = < u < + N 1,1 = u 1, + 1 u 1 u 1 2, = { u N 2,1 = u 1 2, + 2 u 2 1 3, = { 2 u u 1 N 3,1 = u 1 2 1 3, + 3 u 3 2 4, = { 3 u u 2 N 4,1 = u 2 3 2 4, + 4 u 4 3 5, = { 4 u N 5,1 = u 3 4 3 5, + 4 u u 3 4 4 6, = { N 6,1 = u 4 4 4 6, + 5 u 5 u 5 4 7, = { u < 1 u < 1 1 u < 2 1 u < 2 2 u < 3 2 u < 3 3 u < 4 3 u < 4 4 u < 5 2
N 7,1 = u 4 5 4 7, + 5 u u 4 5 5 8, = { 4 u < 5 N 8,1 = u 5 5 5 8, + 5 u 5 5 9, = < u < + N,2 = u,1 + 1 u 1 1,1 = (1 u) 2 N 1,2 = u 1 1,1 + 2 u 2 2,1 = { N 2,2 = u 2 2,1 + 3 u 3 1 3,1 = N 3,2 = u 1 3 1 3,1 + 4 u 4 2 4,1 = { { 3 2 1 2 2 u 1 2 1 2 11 2 1 2 3 2 u2 (2 u)2 1 2 u2 + 3 u u2 (3 u)2 (u 1)2 + 5 u u2 (4 u)2 u < 1 u < 1 1 u < 2 u < 1 1 u < 2 2 u < 3 1 u < 2 2 u < 3 3 u < 4 N 4,2 = u 2 4 2 4,1 + 4 u (u 2)2 2 4 3 5,1 = { 16 + 1 u 3 2 u2 1 2 u < 3 3 u < 4 N 5,2 = u 3 4 3 5,1 + 5 u (u 3)2 5 4 6,1 = { (5 u) 2 N 6,2 = u 4 5 4 6,1 + 5 u 5 4 7,1 = 2 (u 4) (5 u) 3 u < 4 4 u < 5 4 u < 5 n C 2 (1. 4) = N i,2 (1. 4) P i C 2 (1. 4) i= N 7,2 = u 4 5 4 7,1 + 5 u 5 5 8,1 = (u 4) 2 4 u < 5 = N,2 (1. 4) P + N 1,2 (1. 4) P 1 + N 2,2 (1. 4) P 2 + N 3,2 (1. 4) P 3 + N 4,2 (1. 4) P 4 + N 5,2 (1. 4) P 5 + N 6,2 (1. 4) P 6 + N 7,2 (1. 4) P 7 N,2 (1. 4) = N 4,2 (1. 4) = N 5,2 (1. 4) = N(1. 4) 6,2 = N 7,2 (1. 4) = C 2 (1. 4) = N 1,2 (1. 4) P 1 + N 2,2 (1. 4) P 2 + N 3,2 (1. 4) P 3 C 2 (1. 4) = 1 2 (2 1. 4)2 P 1 + ( 3 2 + 3 (1. 4) (1. 4)2 ) P 2 + 1 2 (1. 4 1)2 P 3 C 2 (1. 4) =. 18 P 1 +. 74 P 2 +. 8 P 3 21
n C 2 (3. 7) = N i,2 (3. 7) P i i= C 2 (3. 7) = N,2 (3. 7) P + N 1,2 (3. 7) P 1 + N 2,2 (3. 7) P 2 + N 3,2 (3. 7) P 3 + N 4,2 (3. 7) P 4 + N 5,2 (3. 7) P 5 + N 6,2 (3. 7) P 6 + N 7,2 (3. 7) P 7 N,2 (3. 7) = N 1,2 (3. 7) = N 2,2 (3. 7) = N(3. 7) 6,2 = N 7,2 (3. 7) = C 2 (3. 7) = N 3,2 (3. 7) P 3 + N 4,2 (3. 7) P 4 + N 5,2 (3. 7) P 5 C 2 (3. 7) = 1 2 (4 3. 7)2 P 3 + ( 16 + 1 (3. 7) 3 2 (3. 7)2 ) P 4 + (3. 7 3) 2 P 5 C 2 (3. 7) =. 45 P 3 +. 465 P 4 +. 49 P 5 Rys. 8.3 Sens fizyczny i matematyczny powyższych obliczeń został przedstawiony w zadaniu nr 1. Dla przypomnienia: Krzywe typu splajn to sklejone krzywe Bezier a. A punkty należące do takich splajnów liczy się w dość skomplikowany sposób. Największe trudności to: 1. Zbudowanie wektora węzłów U, 2. Przyjęcie założenia, że / =, 3. Uniknięcie pomyłki w indeksach i oraz p w wielomianach Bernstein a. Na przykładzie zadania nr 2 okazuje się, że na współrzędne punktu (pierwszy czerwony z rys. 8.3) dla u = 1.4 mają pływ tylko najbliższe punkty P 1, P 2 oraz P 3. To, co się dzieje z tą krzywą w innych segmentach, nie wpływa na ten punkt. Analogiczna sytuacja występuje w przypadku kolejnego czerwonego punktu z rys. 8.3 dla u = 3.7, który zależy tylko od P 3, P 4, i P 5. Reszta punktów nie ma znaczenia dla jego położenia. 22