Elementy grafiki komputerowej. Elementy krzywych Aleksander Denisiuk Uniwersytet Warmińsko-Mazurski Olsztyn, ul. Słoneczna 54 denisjuk@matman.uwm.edu.pl 1 / 36
Elementy krzywych Najnowsza wersja tego dokumentu dostępna jest pod adresem http://wmii.uwm.edu.pl/~denisjuk/uwm 2 / 36
Splajny Krzywe Bézier Renault, 1968, 1974; de Citroën 1959, 1963 B-splajny (Shoenberg 1946) 3 / 36
Ô¼ Ô Krzywe trzeciego stopnia Ô½ Õ Ùµ Ô¾ 4 / 36
Krzywe trzeciego stopnia Ô ¼ Ô ½ Ô ¾ Ô Ô ¾ Ô ¼ Ô Ô ½ 5 / 36
Krzywe trzeciego stopnia q(u) = B 0 (u)p 0 +B 1 (u)p 1 +B 2 (u)p 2 +B 3 (u)p 3, gdzie B i (u) = ( 3 i) u i (1 u) 3 i wielomiany Bernsteina, ) = C m n! n = symbol Newtona ( n m m!(n m)! B 0 (u) = (1 u) 3, B 1 (u) = 3u(1 u) 2 B 2 (u) = 3u 2 (1 u), B 3 (u) = u 3 3 B i (u) = 3 ) u i (a u) 3 i = ( u+(1 u) ) 3 = 1 i=0 i=0 ( 3 i 6 / 36
½ ¾ Wielomiany Bernsteina (stopnia 3) Ý ½ ¼ ½ Ù ¼ 7 / 36
Wielomiany Bernsteina (stopnia 3) B 0 (0) = 3, B 1 (0) = 3, B 2 (0) = 0, B 3 (0) = 0 B 0 (1) = 0, B 1 (1) = 0, B 2 (1) = 3, B 3 (1) = 3 q (0) = 3(p 1 p 0 ), q (1) = 3(p 3 p 2 ) 8 / 36
Ô¼ Ô Algorytm de Ö¼ Ô½ ¼ ؼ Ö½ ½ Ö¾ Ô¾ r i = (1 u) p i +u p i+1, s i = (1 u) r i +u p i+1, t 0 = (1 u) s 0 +us 1 9 / 36
Ô¼ Algorytm de (u = 1 2 ) Ö¼ Ô½ Ö½ ½ ؼ ¼ Õ½ Ùµ Õ¾ Ùµ Ô Ö¾ Ô¾ r i = p i +p i+1 2, s i = r i +r i+1 2, t 0 = s 0 +s 1 2 q(1/2) = t 0 = 1 8 p 0 + 3 8 p 1 + 3 8 p 2 + 1 8 p 3, 10 / 36
Ô¼ Podział krzywej Ö¼ Ô½ Ö½ ½ ؼ ¼ Õ½ Ùµ Õ¾ Ùµ Ô Ö¾ Ô¾ Twierdzenie 1. Niech q(u) będzie krzywa o punktach kontrolnych p 0, p 1, p 2, p 3. Wtedy q 1 (u) = q(u/2) będzie Krzywa o punktach kontrolnych p 0, r 0, s 0, t 0, q 2 (u) = q((u+1)/2) będzie krzywa o punktach t 0, s 1, r 2, p 3. 11 / 36
Ô¼ Ô Zagęszczanie (recursive subdivision) Ö¼ Ô½ ¼ ؼ Ö½ ½ Ö¾ Ô¾ Twierdzenie 2. Niech q(u) będzie krzywa o punktach kontrolnych p 0, p 1, p 2, p 3. Wtedy q 1 (u) = q(u 0 u) będzie Krzywa o punktach kontrolnych p 0, r 0, s 0, t 0, q 2 (u) = q(u 0 +(1 u 0 )u) będzie krzywa o punktach t 0, s 1, r 2, p 3. 12 / 36
Renderowanie krzywych w postaci ciagu odcinków prostych q( 1 2 ) 1 2 (p 0 +p 3 ) < ε, p 0 p 1 p 2 +p 3 2 < (8ε/3) 2, p 1,p 2 p 0 p 3 13 / 36
Ô¼ Ö¼ Ô Ö¾ Właściwość otoczki wypukłej Krzywa zawiera się w otoczce wypukłej swoich punktów kontrolnych Ô½ Ö½ ½ ؼ ¼ Ô¾ Õ¾ Ùµ Õ½ Ùµ 14 / 36
Krzywe Ô½ ¼ Ô½ ½ Ô½ Ô¾ ¼ Ô¾ ½ Ô½ ¾ Ô½ ½ Ô¾ ¾ Õ¾ Ùµ Õ½ Ùµ µ Ô¾ Ô½ ¼ Ô½ ¾ Õ½ Ùµ Ô¾ ½ Ô¾ ¼ Ô½ µ Õ¾ Ùµ Ô¾ Ô¾ ¾ q 1(1) = q 2(0) p 1,3 p 1,2 = p 2,1 p 2,0 15 / 36
Zagadnienie interpolacji Dane sa punkty p 0,...,p m i węzły u 0,...,u m. Określić parametryzowana krzywa q(u) tak, żeby q(u i ) = p i dla i = 0,...,m. Krzywa odcinkowo-wielomianowa (trzeciego stopnia). Sklejanie krzywych. 16 / 36
Splajny Catmulla-Roma Dane sa punkty P 0,...,P m i węzły u i = i dla i = 0,...,m. Określić parametryzowana krzywa q(u) tak, żeby q(i) = P i dla i = 1,...,m 1. Krzywa Catmull-Rom składa się z m 2 krzywych. Punkty kontrolne wybiera się tak, żeby krzywa była klasy C 1. 17 / 36
½ Ô ½ Ô ½ º Ì ÔÓ ÒØ Ô Ô Ô ½ Ò Ô ½ ÓÖÑ Ø ÓÒØÖÓÐ ÔÓ ÒØ Ó Ô Splajny Catmulla-Roma Ô ½ Ô Ô Ô ¾Ð Ô ½ Ô ½ ¾Ð ½ Ô ¾ ÙÖ ÎÁÁº¾¾ Ø ØÑÙÐйÊÓÑ ÔÐ Ò Ñ ÒØ ÖÓÑ Ø ÔÓ ÒØ Ô Ò Ò Ø ÔÓ ÒØ Ô ½ º Ì ÔÓ ÒØ Ô Ô Ò Ô ØÓ Ö ÓÐÐ Ò Ö Ò Ô Ö ÐÐ Ð ØÓ Ö Ø Ö Þ Ö ÙÖÚ Û ÓÛÒ ÓØØ ÙÖÚ º l i = 1 2 (p i+1 p i 1 ), p ± i = p i ± 1 3 l i 18 / 36
Ô Ô ¼ Ô ½ Ô ¾ Syngularność splajnu Catmulla-Roma Ô Ô ½ Ô ¼ Ô Ô ¾ Ô Ô Ô Ô Ô ÌÛÓ Ü ÑÔÐ Ó ØÑÙÐйÊÓÑ ÔÐ Ò Û Ø ÙÒ ÓÖÑÐÝ Ô ÙÖ ÎÁÁº¾ ÒÓØ º 19 / 36
Krzywe k Bi k (u) = i=0 q(u) = B k i (u) = k i=0 ( k i k Bi k (u)p i i=0 ) u i (1 u) k i, ( ) k u i (1 u) k i = ( u+(1 u) ) k = 1, i q (0) = k(p 1 p 0 ), q (1) = k(p k p k 1 ). 20 / 36
Ô ¼ Ô ½ Ô ¾ Ô Ô Ô Ô Ô Ô Krzywe Ô ¼ µ Ö ÓÒ Ô ½ Ô ¼ Ô ½ µ Ö ØÛÓ Ô ¾ µ Ö Ø 21 / 36
Podwyższenie stopnia ˆP 0 = P 0 ˆPk+1 = P k ˆP i = i k+1 P i 1 + k i+1 k +1 P i 22 / 36
Ô ¼ ¼ Ô ¼ Powierzchnie Ô ¼ Ô 23 / 36
Powierzchnie trzeciego stopnia 3 3 q(u,v) = B i (u)b j (v)p i,j = i=0 j=0 3 = B i (u) i=0 3 B j (v)p i,j = j=0 ( 3 3 ) = B j (v) B i (u)p i,j, j=0 i=0 (u,v) [0,1] [0,1] 24 / 36
Przekrój powierzchni ( ) q(u,v) = 3 B i (u) 3 B j (v)p i,j i=0 j=0 r i = 3 B j (v)p i,j, s j = 3 B i (u)p i,j j=0 i=0 25 / 36
Ô ¼ ¼ Ô ¼ Graniczne linie powierzchni Ô ¼ Ô v = 0, u [0,1]: granica przednia, p i,0 u = 0, v [0,1]: granica lewa, p 0,j 26 / 36
Pochodne czastkowe powierzchni q 3 v (u,0) = i=0 q 3 v (u,1) = i=0 q 3 u (0,v) = i=0 3B i (u)(p i,1 p i,0 ) 3B i (u)(p i,3 p i,2 ) 3B j (v)(p 1,j p 0,j ) q 3 v (1,v) = 3B j (v)(p 3,j p 3,j ) i=0 27 / 36
Sklejane powierzchnie p3 3 = r0 3 ; ; p0 3 r3 3 ; ; q1 q2 p0 0 ; p3 0 = r0 0 ; r3 0 ; ; Figure VII.13: Two B ezier pat hes join to form a single smooth surfa e. The two pat hes q1 and q2 ea h have sixteen ontrol points. The four rightmost ontrol points of q1 are the same as the four leftmost ontrol points of q282./ 36The pat hes are shown forming a C 1 - ontinuous surfa e.
Wymierne krzywe p i = (x : y : z : w), q(u) = i B k i (u)p i współrzędna w pozwala na powiększenie wagi punktu kontrolnego modelowanie krzywych stożkowych rzut perspektywiczny krzywej wymiernej jest zawsze krzywa wymierna punkty kontrolne moga być umieszczone w nieskończoności 29 / 36
Ô ¼ ½ Powiększenie wagi punktu kontrolnego q(u) = i Ô ½ B k i (u)(w i p i : w i ) i w i B k i (u) j w jb k i (u)p i Ô ½ ½ Ô ¾ ½ 30 / 36
Okrag Ô¼ ¼ ½ ½ Ô¾ ¼ ½ ½ Õ Ùµ Ô½ ½ ¼ ¼ q(u) = (1 u) 2 p 0 +2u(1 u)p 1 +u 2 p 2 = = ( 2u(1 u) : (1 u) 2 u 2 : (1 u) 2 +u 2) ( 2u(1 u) (1 u)2 u 2 ) (1 u) 2 +u 2, (1 u) 2 +u 2 31 / 36
Ô ¼ Ì ¼ Ì ¾ Ô ¾ Krzywe stożkowe Twierdzenie 3. Niech T 0 i T 2 będa stycznymi do krzywej stożkowej C w punktach p 0 i p 2, p 1 bęzie punktem przecięcia T 0 i T 2. Wtedy istnieje waga w 0 taka, że wymierna krzywa o punktach kontrolnych (p 0 : 1), (p 1 : w), (p 2 : 1) generuje odcinek krzywej C pomiędzy p 0 a p 2. Ô ½ 32 / 36
¾ ¼ ½ Ô ¾ ½ Û ¼ ½ ¼ Ô ¼ ½ Û Krzywe stożkowe ½ ¼ ¾ Ô ½ ½ ¾ Û ½ ½ Ô Ô ½ ¾ ½ Û ¾ Ô ¾ Ô Û ¾ ½ ¾ ½ ¾ ½ ¾ ¼ ¾ Ô Ô ½ ¼ Û 33 / 36
¼ ¼ ½ Ô ¼ ½ Û Półokrag jako krzywa trzeciego stopnia ¼ ½ ½ Û Ô ½ ¾ ½ Ô ½ ½ Û Ô ¾ Û ¾ ½ ¾ ½ 34 / 36
Okrag o promieniu 2 (p 0,p 1,p 2 ) (p 0 = Mp 0,p 1 = Mp 1,p 2 = Mp 2 ) Ô¼ ¼ ½ ½ Õ Ùµ Ô½ ½ ¼ ¼ Ô¾ ¼ ½ ½ 35 / 36
Bryła obrotowa ¾ ½ ¾ ¼ ¾ ½ ¼ ¾ ½ ¼ µ ¼ ¼ µ ( 2 : 1 : 0 : 1) (0 : 0 : 2 : 0) (2 : 1 : 0 : 1) ( 3 2 : 1 2 : 0 : 1) (0 : 0 : 3 2 : 0) (3 2 : 1 2 : 0 : 1) ( 3 : 0 : 0 : 1) (0 : 0 : 3 : 0) (3 : 0 : 0 : 1) ( 2 : 1 : 0 : 1) (0 : 0 : 2 : 0) (2 : 1 : 0 : 1) 36 / 36