TEMATYKA: Krzywe Bézier a Ćwiczenia nr 7 DEFINICJE: Interpolacja: przybliżanie funkcji za pomocą innej funkcji, zwykle wielomianu, tak aby były sobie równe w zadanych punktach. Poniżej przykład interpolacji liniowej. Rys. 8.1 Aproksymacja: proces określania rozwiązań przybliżonych na podstawie rozwiązań znanych, które są bliskie rozwiązaniom dokładnym w ściśle sprecyzowanym sensie. Zazwyczaj aproksymuje się np. funkcje skomplikowane funkcjami prostszymi. Często stosowana w przypadku szukania rozwiązań dla danych uzyskanych metodami empirycznymi, które mogą być obarczone błędami. Regresja liniowa jest przykładem aproksymacji liniowej. Krzywa Bézier a: parametryczna krzywa powszechnie stosowana w programach do projektowania inżynierskiego CAD, projektowania grafiki komputerowej, do reprezentowania kształtów znaków w czcionkach komputerowych i systemach przetwarzania grafiki oraz w grafice wektorowej. Krzywa Bézier a to krzywa wielomianowa trzeciego stopnia, czyli taka która może być definiowana za pomocą trzech wielomianów (odpowiednio dla współrzędnych x, y i z) z pewnym parametrem t. Wielomiany trzeciego stopnia są używane najczęściej, ponieważ wielomiany niższego stopnia są zbyt mało elastyczne, jeśli chodzi o sterowanie kształtem krzywej. Natomiast wielomiany wyższego stopnia wprowadzają niepożądane oscylacje, a ponadto wymagają większej liczby obliczeń. Krzywe trzeciego stopnia są również krzywymi najniższego stopnia, które nie leżą w jednej płaszczyźnie w D. Współczynniki wielomianów są tak dobierane, żeby krzywa przebiegała wzdłuż pożądanej ścieżki. Krzywa ta została opracowana przez Pierre'a Bézier a z myślą o wykorzystaniu przy projektowaniu samochodów w firmie Renault. Krzywa określona jest przez dwa punkty końcowe oraz dwa punkty pośrednie nie należące do krzywej. Krzywa Bézier a interpoluje więc oba końcowe punkty i aproksymuje dwa pozostałe. 1
Rys. 8.2 Krzywa Bézier a w praktyce: pojedynczą krzywą Bézier a jednoznacznie identyfikują cztery punkty, które nazwiemy p, p 1, p 2 i p. Krzywa zaczyna się w punkcie p i kończy w p ; p jest zatem punktem (węzłem) początkowym, a p punktem (węzłem) końcowym (zbiorczo punkty p i p są często nazywane końcowymi - węzłami). Punkty p 1 i p 2 to punkty kontrolne. Punkty kontrolne działają jak magnesy i przyciągają do siebie krzywą. Oto przykładowa krzywa Béziera z dwoma punktami końcowymi i dwoma kontrolnymi: Rys. 8. Krzywa zaczyna się w punkcie p i zmierza w stronę p 1, ale potem porzuca ten szlak i kieruje się w stronę p 2. Nie dotykając p 2, kończy się w punkcie p. 2
Oto inna krzywa Bézier a: Rys. 8.4 Rzadko się zdarza, żeby krzywa Bézier a przechodziła przez punkty kontrolne. Jeżeli jednak umieścić oba punkty kontrolne między punktami końcowymi, krzywa Bézier a zmieni się w linię prostą i będzie przechodzić przez oba punkty: Rys. 8.5 Można też wybrać punkty, które zawiną krzywą Bézier a w pętlę: Rys. 8.6 Krzywe Bézier a mają kilka cech, które predestynują je do zastosowania w projektowaniu wspomaganym komputerowo. Po pierwsze, przy odrobinie wprawy, zwykle da się dopasować krzywą do żądanego kształtu. Po drugie, krzywa Bézier a jest bardzo dobrze kontrolowana. Niektóre krzywe nie przechodzą przez żaden z definiujących je punktów. Krzywa Béziera jest zawsze zakotwiczona w dwóch punktach końcowych. Co więcej, pewne rodzaje krzywych mają osobliwości, w których krzywa ucieka do nieskończoności (co w komputerowym projektowaniu jest raczej niepożądane). Krzywa Bézier a jest znacznie bardziej zdyscyplinowana. Zawsze ogranicza ją czworokąt (nazywany powłoką wypukłą) utworzony przez połączenie punktów końcowych i kontrolnych. (Sposób łączenia punktów w celu utworzenia powłoki wypukłej zależy od konkretnej krzywej).
Trzecia właściwość krzywej Bézier a dotyczy związku między punktami końcowymi i kontrolnymi. W punkcie początkowym krzywa jest zawsze styczna do linii prostej biegnącej od punktu początkowego do pierwszego punktu kontrolnego i ma ten sam kierunek. W punkcie końcowym krzywa jest zawsze styczna do linii prostej biegnącej od drugiego punktu kontrolnego do punktu końcowego i ma ten sam kierunek. To kolejne dwa założenia używane do wyprowadzania wzorów Bézier a. Po czwarte, krzywe Bézier a często wywołują pozytywne wrażenia estetyczne. Punkty należące do krzywej Bezier a obliczane są z równań: f(t) = x(t) = (1 t) x + t (1 t) 2 x 1 + t 2 (1 t) x 2 + t x y(t) = (1 t) y + t (1 t) 2 y 1 + t 2 (1 t) y 2 + t y z(t) = (1 t) z + t (1 t) 2 z 1 + t 2 (1 t) z 2 + t z t 1 Zapis macierzowy: 1 x(t) = [x x 1 x 2 x [ 6 1 1 f(t) = y(t) = [y y 1 y 2 y [ 6 1 1 z(t) = [z z 1 z 2 z [ 6 1 t 1 t 1 [ t 2 ] t 1 1 t [ t 2 ] t 1 1 t [ t 2 ] t 1 Zapis za pomocą wielomianów bazowych Bernsteina: n f(t) = B i,n (t) p i i= t 1 B i,n = ( n i ) ti (1 t) n i = n! i! (n i)! ti (1 t) n i wielomiany bazowe n stopień krzywej, dla n = 1 punkty: p, p 1 ; n = 2 punkty: p, p 1, p 2 ; n = punkty: p, p 1, p 2, p ; n = 4 punkty: p, p 1, p 2, p, p 4 ; itd. 4
ZADANIA: 1. Wyprowadzić wzór na krzywą Bézier a trzeciego stopnia leżącą w przestrzeni. Pokazać zapis wielomianowy, macierzowy i z wykorzystaniem wielomianów bazowych Bernsteina. 2. W kartezjańskim układzie współrzędnych 2D wykreślić krzywą Bézier a o następujących parametrach: a) p (4; -2) punkt początkowy, b) p 1 (2; 5) pierwszy punkt kontrolny, c) p 2 (8; 8) drugi punkt kontrolny, d) p (11; 6) punkt końcowy, e) parametr t przyjąć z przedziału <; 1> z krokiem co.1 Rys. 8.7 5
. W kartezjańskim układzie współrzędnych 2D dane są dwa punkty p (6; 7) oraz p (12; 1) są one odpowiednio punktem początkowym i końcowym pewnej krzywej Bézier a. Wyznaczyć współrzędne punktów kontrolnych p 1 (x 1 ; y 1 ) oraz p 2 (x 2 ; y 2 ) w taki sposób, aby krzywa Bézier a była aproksymacją ćwiartki okręgu. Rys. 8.8 4. Dla danych na płaszczyźnie punktów p, p 1, p 2, p wyznaczyć (w sposób graficzny) punkt należący do krzywej Bézier a, przyjąć parametr t = 1/. Rys. 8.9 6
ROZWIĄZANIA ZADAŃ: 1. Wyprowadzić wzór na krzywą Bézier a trzeciego stopnia leżącą w przestrzeni. Pokazać zapis wielomianowy, macierzowy i z wykorzystaniem wielomianów bazowych Bernsteina. Krzywa Bézier a to wielomian trzeciego stopnia. Jak wszystkie wielomiany trzeciego stopnia, krzywą Bézier a jednoznacznie określają cztery punkty, które nazwano p (punkt początkowy), p 1 i p 2 (dwa punkty kontrolne) oraz p (punkt końcowy). Te cztery punkty można również oznaczyć, jako (x, y, z ), (x 1, y 1, z 1 ), (x 2, y 2, z 2 ) i (x, y, z ). Ogólna, parametryczna postać wielomianu trzeciego stopnia trzech zmiennych to: x(t) = a x t + b x t 2 + c x t + d x y(t) = a y t + b y t 2 + c y t + d y z(t) = a z t + b z t 2 + c z t + d z a x, b x, c x, d x, a y, b y, c y, d y, a z, b z, c z, d z wielkości stałe t przybiera wartości od do 1 Każda krzywa Bézier a jest jednoznacznie określona przez te dwanaście stałych. Wartości stałych zależą od czterech 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 + b x t 2 + c x t + d x = d x = x y(t = ) = a y t + b y t 2 + c y t + d y = d y = y z(t = ) = a z t + b z t 2 + c z t + d z = d z = z Drugie założenie związane z krzywą Bézier a jest takie, że kończy się ona w punkcie (x, y, z ), gdy t jest równe 1: x(t = 1) = a x 1 + b x 1 2 + c x 1 + d x = a x + b x + c x + d x = x y(t = 1) = a y 1 + b y 1 2 + c y 1 + d y = a y + b y + c y + d y = y z(t = 1) = a z 1 + b z 1 2 + c z 1 + d z = a z + b z + c z + d z = z 7
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 trzeciego stopnia liczone względem t to: x (t) = a x t 2 + 2 b x t + c x y (t) = a y t 2 + 2 b y t + c y z (t) = a z t 2 + 2 b z t + c z 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) = (x 1 x ) t + x y(t) = (y 1 y ) t + y z(t) = (z 1 z ) t + z gdzie t przybiera wartości od do 1/. Dlaczego 1/? 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/ całej krzywej. Oto pierwsze pochodne tych zmodyfikowanych równań parametrycznych: x (t) = (x 1 x ) y (t) = (y 1 y ) z (t) = (z 1 z ) Równania te reprezentują nachylenie krzywej Bézier a, gdy t jest równe zeru, a zatem: x (t = ) = a x 2 + 2 b x + c x = c x = (x 1 x ) y (t = ) = a y 2 + 2 b y + c y = c y = (y 1 y ) z (t = ) = a z 2 + 2 b z + c z = c z = (z 1 z ) 8
Ostatnie założenie jest takie, że w punkcie końcowym krzywa Bézier a jest styczna do linii prostej biegnącej od drugiego punktu kontrolnego do punktu końcowego i ma taki sam kierunek: x (t = 1) = a x 1 2 + 2 b x 1 + c x = a x + 2 b x + c x = (x x 2 ) y (t = 1) = a y 1 2 + 2 b y 1 + c y = a y + 2 b y + c y = (y y ) z (t = 1) = a z 1 2 + 2 b z 1 + c z = a z + 2 b z + c z = (z z ) Powstał układ czterech równań z czterema niewiadomymi: d x = x a x = x + x 1 x 2 + x a x + b x + c x + d x = x b x = x 6 x 1 + x 2 c x = (x 1 x ) c x = x 1 x a x + 2 b x + c x = (x x 2 ) d x = x d y = y a y = y + y 1 y 2 + y a y + b y + c y + d y = y b y = y 6 y 1 + y 2 c y = (y 1 y ) c y = y 1 y a y + 2 b y + c y = (y y 2 ) d y = y d z = z a z = z + z 1 z 2 + z a z + b z + c z + d z = z b z = z 6 z 1 + z 2 c z = (z 1 z ) c z = z 1 z a z + 2 b z + c z = (z z 2 ) z y = z Podstawiając stałe do uogólnionych równań parametrycznych trzeciego stopnia otrzymano: x(t) = ( x + x 1 x 2 + x ) t + ( x 6 x 1 + x 2 ) t 2 + ( x 1 x ) t + x y(t) = ( y + y 1 y 2 + y ) t + ( y 6 y 1 + y 2 ) t 2 + ( y 1 y ) t + y z(t) = ( z + z 1 z 2 + z ) t + ( z 6 z 1 + z 2 ) t 2 + ( z 1 z ) t + z Po uporządkowaniu zapis wielomianowy: x(t) = (1 t) x + t (1 t) 2 x 1 + t 2 (1 t) x 2 + t x y(t) = (1 t) y + t (1 t) 2 y 1 + t 2 (1 t) y 2 + t y z(t) = (1 t) z + t (1 t) 2 z 1 + t 2 (1 t) z 2 + t z 9
W postaci macierzowej: 1 x(t) = [x x 1 x 2 x [ 1 1 y(t) = [y y 1 y 2 y [ 1 1 z(t) = [z z 1 z 2 z [ 1 t 1 6 6 6 1 [ t 2 ] t 1 1 t [ t 2 ] t 1 1 t [ t 2 ] t 1 t Zapis za pomocą wielomianów bazowych Bernsteina: n = t ϵ <; 1> f(t) = B i, (t) p i = B, (t) p + B 1, (t) p 1 + B 2, (t) p 2 + B, (t) p i= B, = ( ) t (1 ) = B 1, = ( 1 ) t1 (1 ) 1 = B 2, = ( 2 ) t2 (1 ) 2 = B, = ( ) t (1 ) =!! ( )! t (1 t) = (1 t)! 1! ( 1)! t1 (1 t) 1 = t (1 t) 2! 2! ( 2)! t2 (1 t) 2 = t 2 (1 t)!! ( )! t (1 t) = t f(t) = (1 t) p + t (1 t) 2 p 1 + t 2 (1 t) p 2 + t p 1
2. W kartezjańskim układzie współrzędnych 2D wykreślić krzywą Bézier a o następujących parametrach: f) p (4; -2) punkt początkowy, g) p 1 (2; 5) pierwszy punkt kontrolny, h) p 2 (8; 8) drugi punkt kontrolny, i) p (11; 6) punkt końcowy, j) parametr t przyjąć z przedziału <; 1> z krokiem co.1 Rys. 8.7 1 1 x(t) = [x x 1 x 2 x [ 6 [ t 2 ] t 1 1 1 1 t y(t) = [y y 1 y 2 y [ 6 [ t 2 ] t 1 1 t =. 1;. 2;. ;. 4;. 5;. 6;. 7;. 8;. 9 t 11
1 1 (. 1) x(t =. 1) = [4 2 8 11 [ 6 [ (. 1) 2 ] =. 1 1 1 1 (. 1) + (. 1) 2 + ( ). 1 + 1 1 (. 1) = [4 2 8 11 + ( 6) (. 1) 2 +. 1 + 1 (. 1) + (. 1) 2 = +. 1 + 1 [ 1 (. 1) + (. 1) 2 +. 1 + 1 ]. 729. 24 = [4 2 8 11 [ ] = [4. 729 + 2. 24 + 8. 27 + 11. 1] =. 629. 27. 1 1 1 (. 1) y(t =. 1) = [ 2 5 8 6 [ 6 [ (. 1) 2 ] =. 1 1 1 1 (. 1) + (. 1) 2 + ( ). 1 + 1 1 (. 1) = [ 2 5 8 6 + ( 6) (. 1) 2 +. 1 + 1 (. 1) + (. 1) 2 = +. 1 + 1 [ 1 (. 1) + (. 1) 2 +. 1 + 1 ]. 729. 24 = [ 2 5 8 6 [ ] = [ 2. 729 + 5. 24 + 8. 27 + 6. 1] =. 21. 27. 1 1 x(t =. 2) = [4 2 8 11 [ 6 1 1 y(t =. 2) = [ 2 5 8 6 [ 6 1 1 x(t =. ) = [4 2 8 11 [ 6 1 1 y(t =. ) = [ 2 5 8 6 [ 6 1 1 x(t =. 4) = [4 2 8 11 [ 6 1 1 y(t =. 4) = [ 2 5 8 6 [ 6 1 1 1 1 1 1 1 (. 2) (. 2) 2. 2 [ 1 ] =. 672 (. 2) (. 2) 2 = 1. 712. 2 [ 1 ] (. ) (. ) 2. [ 1 ] = 4. 6 (. ) (. ) 2 =. 19. [ 1 ] (. 4) (. 4) 2. 4 [ 1 ] = 4. 76 (. 4) (. 4) 2 = 4. 416. 4 [ 1 ] 12
1 x(t =. 5) = [4 2 8 11 [ 6 1 1 y(t =. 5) = [ 2 5 8 6 [ 6 1 1 x(t =. 6) = [4 2 8 11 [ 6 1 1 y(t =. 6) = [ 2 5 8 6 [ 6 1 1 x(t =. 7) = [4 2 8 11 [ 6 1 1 y(t =. 7) = [ 2 5 8 6 [ 6 1 1 x(t =. 8) = [4 2 8 11 [ 6 1 1 y(t =. 8) = [ 2 5 8 6 [ 6 1 1 x(t =. 9) = [4 2 8 11 [ 6 1 1 y(t =. 9) = [ 2 5 8 6 [ 6 1 1 1 1 1 1 1 1 1 1 1 (. 5) (. 5) 2. 5 [ 1 ] = 5. 625 (. 5) (. 5) 2 = 5. 75. 5 [ 1 ] (. 6) (. 6) 2. 6 [ 1 ] = 6. 664 (. 6) (. 6) 2 = 6. 64. 6 [ 1 ] (. 7) (. 7) 2. 7 [ 1 ] = 7. 787 (. 7) (. 7) 2 = 6. 477. 7 [ 1 ] (. 8) (. 8) 2. 8 [ 1 ] = 8. 928 (. 8) (. 8) 2 = 6. 68. 8 [ 1 ] (. 9) (. 9) 2. 9 [ 1 ] = 1. 21 (. 9) (. 9) 2 = 6. 451. 9 [ 1 ] 1
Odp.: Rys. 8.1 Rys. 8.11 14
. W kartezjańskim układzie współrzędnych 2D dane są dwa punkty p (6; 7) oraz p (12; 1) są one odpowiednio punktem początkowym i końcowym pewnej krzywej Bézier a. Wyznaczyć współrzędne punktów kontrolnych p 1 (x 1 ; y 1 ) oraz p 2 (x 2 ; y 2 ) w taki sposób, aby krzywa Bézier a była aproksymacją ćwiartki okręgu. Wyznaczenie parametrów ćwiartki okręgu: Rys. 8.8 (x a) 2 + (y b) 2 = r 2 równanie okręgu 6 a a u = [ ] v = [12 ] wektory prostopadłe 7 b 1 b u v u v = (6 a) (12 a) + (7 b) (1 b) = iloczyn skalarny (6 a) 2 + (7 b) 2 = r 2 (12 a) 2 + (1 b) 2 = r 2 trzy równania i trzy niewiadome (6 a) (12 a) + (7 b) (1 b) = (6 a)2 + (7 b) 2 = (12 a) 2 + (1 b) 2 (6 a) (12 a) + (7 b) (1 b) = dwa równania i dwie niewiadome (6 a)2 (12 a) 2 = (1 b) 2 (7 b) 2 różnica kwadratów (6 a) (12 a) + (7 b) (1 b) = [6 a 12 + a [6 a + 12 a] = [1 b 7 + b [1 b + 7 b] (6 a) (12 a) + (7 b) (1 b) = [ 6 [ 2 a + 18] = [ 6 [ 2 b + 8] (6 a) (12 a) + (7 b) (1 b) = 15
a 9 = b 4 po odpowiednich przekształceniach a = 5 + b (6 a) (12 a) + (7 b) (1 b) = a = 5 + b (6 5 b) (12 5 b) + (7 b) (1 b) = a = 5 + b (1 b) (7 b) + (7 b) (1 b) = a = 5 + b 2 (1 b) (7 b) = b = 1 b = 7 = 6 = 12 a a b = 1 b = 7 Komentarz: możliwe jest występowanie dwóch ćwiartek okręgów. Wybrano tą z treści zadania, czyli o współrzędnych środka O(6; 1) Rys. 8.12 (6 6) 2 + (7 1) 2 = r 2 r = 6 promień ćwiartki okręgu Wyznaczenie parametrów krzywej Bézier a: Rys. 8.1 16
1 x A = [6 x 1 12 12 [ 1 6 1 (. 5) [ (. 5) 2 ] pierwsze równanie (krzywa). 5 1 1 y A = [7 7 y 2 1 [ 1 6 1 (. 5) [ (. 5) 2 ] drugie równanie (krzywa). 5 1 (x A 6) 2 + (y A 1) 2 = 6 2 trzecie równanie (równanie okręgu) (y A 1) (x A 6) = tan(45o ) = 1 (y A 1) = (x A 6) czwarte równanie (trygonom. ) Cztery równania i cztery niewiadome x A, y A, x 1, y 2 1 1. 125 x A = [6 x 1 12 12 [ 6 [. 25 ] =. 5 1 1 1. 125 +. 25 + ( ). 5 + 1 1 =. 125 = [6 x 1 12 12 [. 125 + ( 6). 25 +. 5 + 1 =. 75 ]. 125 +. 25 +. 5 + 1 =. 75 1. 125 +. 25 +. 5 + 1 =. 125. 125 = [6 x 1 12 12 [. 75 ]. 75. 125 = 6. 125 + x 1. 75 + 12. 75 + 12. 125 = x 1. 75 + 6. 75 1 1. 125. 125 y A = [7 7 y 2 1 [ 6 [. 25 ] = [7 7 y. 5 2 1 [. 75 ] =. 75 1 1. 125 = 7. 125 + 7. 75 + y 2. 75 + 1. 125 = y 2. 75 +. 625 x A = x 1. 75 + 6. 75 y A = y 2. 75 +. 625 (x A 6) 2 + (y A 1) 2 = 6 2 2 (x (y A 1) = (x A 6) A 6) 2 = 6 x A = 18 + 6 = 2 + 6 x A = x 1. 75 + 6. 75 y A = y 2. 75 +. 625 x A = 2 + 6 y A = x A 5 = 2 + 6 5 = 2 + 1 17
x 1 = x A 6. 75. 75 y 2 = y A. 625. 75 Odp.: x 1 = 8 2 2 9. 14 y 2 = 8 2 7 4. 14 x A = 2 + 6 y A = 2 + 1 2 + 6 6. 75 2. 75 = = = 8 2 2. 75. 75 2 + 1. 625 2. 75 = = = 8 2 7. 75. 75 x A = 2 + 6 y A = 2 + 1 Rys. 8.14 4. Dla danych na płaszczyźnie punktów p, p 1, p 2, p wyznaczyć (w sposób graficzny) punkt należący do krzywej Bézier a, przyjać parametr t = 1/. Rys. 8.9 18
Odp.: Rys. 8.15 19