Đường cong và mặt cong Bezier
CH NG VIƯƠ THI T K Đ NG VÀ M T CONG Ế Ế ƯỜ Ặ BEZIER VÀ B-SPLINE Khác v i nh ng ph ng pháp bi u di n m t và đ ng b i các công th c toán h cớ ữ ươ ể ễ ặ ườ ở ứ ọ t ng minh, đây ta s bàn đ n các công c cho phép ch ra các d ng đ ng và m tườ ở ẽ ế ụ ỉ ạ ườ ặ khác nhau d a trên các d li u.ự ữ ệ Đi u này có nghĩa là v i m t đ ng cong cho tr c mà ta ch a xác đ nh đ cề ớ ộ ườ ướ ư ị ượ công th c toán h c c a nó thì làm th nào đ có th n m b t đ c d ng c a đ ngứ ọ ủ ế ể ể ắ ắ ượ ạ ủ ườ cong đó m t cách t ng đ i chính xác qua vi c s d ng m t t p nh các đi m Pộ ươ ố ệ ử ụ ộ ậ ỏ ể 0 , P 1 , . cùng v i m t ph ng pháp n i suy nào đó t t p đi m này đ t o ra đ ng congớ ộ ươ ộ ừ ậ ể ể ạ ườ mong mu n v i m t đ chính xác cho phép.ố ớ ộ ộ Có nhi u cách đ n m b t đ c đ ng cong cho tr c, ch ng h n:ề ể ắ ắ ượ ườ ướ ẳ ạ • L y m t m u đ ng cong ch ng vài ch c đi m cách nhau t ng đ i ng n r iấ ộ ẫ ườ ừ ụ ể ươ ố ắ ồ tìm m t hàm toán h c và ch nh hàm này sao cho nó đi qua các đi m này vàộ ọ ỉ ể kh p v i đ ng cong ban đ u. Khi đó, ta có đ c công th c c a đ ng vàớ ớ ườ ầ ượ ứ ủ ườ dùng nó đ v l i đ ng cong.ể ẽ ạ ườ • Cách khác là dùng m t t p các đi m ki m soát và dùng m t thu t toán đ xâyộ ậ ể ể ộ ậ ể d ng nên m t đ ng cong c a riêng nó d a trên các đi m này. Có th đ ngự ộ ườ ủ ự ể ể ườ cong ban đ u và đ ng cong t o ra không kh p nhau l m, khi đó ta có th diầ ườ ạ ớ ắ ể chuy n m t vài đi m ki m soát và lúc này thu t toán l i phát sinh m t đ ngể ộ ể ể ậ ạ ộ ườ cong m i d a trên t p đi m ki m soát m i. Ti n trình này l p l i cho đ n khiớ ự ậ ể ể ớ ế ặ ạ ế đ ng cong t o ra kh p v i đ ng cong ban đ u.ườ ạ ớ ớ ườ ầ đây, ta s ti p c n v n đ theo ph ng pháp th hai, dùng đ n các đ ng congỞ ẽ ế ậ ấ ề ươ ứ ế ườ Bezier và B-Spline đ t o các đ ng và m t.ể ạ ườ ặ Gi s m t đi m trong không gian đ c bi u di n d i d ng vector tham s p(t).ả ử ộ ể ượ ể ễ ướ ạ ố V i các đ ng cong 2D, p(t) = (x(t), y(t)) và các đ ng 3D, p(t) = (x(t), y(t), z(t)).ớ ườ ườ 6.1. Đ NG CONG BEZIER VÀ M T BEZIERƯỜ Ặ Ch ng VI. ươ Thi t k đ ng cong và m t cong Bezier và B-Splineế ế ườ ặ 6.1.1. Thu t toán Casteljauậ Đ xây d ng đ ng cong p(t), ta d a trên m t dãy các đi m cho tr c r i t o raể ự ườ ự ộ ể ướ ồ ạ giá tr p(t) ng v i m i giá tr t nào đó. Vi c thay đ i các đi m này s làm thay đ iị ứ ớ ỗ ị ệ ổ ể ẽ ổ d ng c a đ ng cong. Ph ng pháp này t o ra đ ng cong d a trên m t dãy cácạ ủ ườ ươ ạ ườ ự ộ b c n i suy tuy n tính hay ướ ộ ế n i suy kho ng gi aộ ả ữ (In-Betweening). Ví d : V i 3 đi m Pụ ớ ể 0 , P 1 , P 2 ta có th xây d ng m t Parabol n i suy t 3 đi mể ự ộ ộ ừ ể này b ng cách ch n m t giá tr t ằ ọ ộ ị ∈ [0, 1] nào đó r i chia đo n Pồ ạ 0 P 1 theo t l t, ta đ cỉ ệ ượ đi m Pể 0 1 trên P 0 P 1 . T ng t , ta chia ti p Pươ ự ế 1 P 2 cũng theo t l t, ta đ c Pỉ ệ ượ 1 1 . N i Pố 0 1 và P 1 1 , l i l y đi m trên Pạ ấ ể 0 1 P 1 1 chia theo t l t, ta đ c Pỉ ệ ượ 0 2 . V i cách làm này, ta s l y nh ng giá tr t khác ớ ẽ ấ ữ ị ∈ [0, 1] thì s đ c t p đi m Pẽ ượ ậ ể 0 2 . Đó chính là đ ng cong p(t).ườ Ta bi u di n b ng ph ng trình:ể ễ ằ ươ P 0 1 (t) = (1-t).P 0 + t.P 1 (1) P 1 1 (t) = (1-t).P 1 + t.P 2 (2) P 0 2 (t) = (1-t).P 0 1 + t.P 1 1 (3) Thay (1), (2) vào (3) ta đ c:ượ P(t) = P 0 2 (t) = (1-t) 2 .P 0 + 2t.(1-t).P 1 + t 2 .P 2 Đây là m t đ ng cong b c 2 theo t nên nó là m t Parabol.ộ ườ ậ ộ T ng quát hóa ta có thu t toán Casteljau cho (L+1) đi m:ổ ậ ể Gi s ta có t p đi m: Pả ử ậ ể 0 , P 1 , P 2 , ., P L V i m i giá tr t cho tr c, ta t o ra đi m Pớ ỗ ị ướ ạ ể i r (t) th h th r, t th h th (r - 1)ở ế ệ ứ ừ ế ệ ứ tr c đó, ta có:ướ P i r (t) = (1-t).P i r-1 (t) + t.P i+1 r-1 (t) (3’) r = 0,1, .,L và i = 0, .,L-r Th h cu i cùng Pế ệ ố 0 L (t) đ c g i là ượ ọ đ ng cong Bezierườ c a các đi m Pủ ể 0 ,P 1 ,P 2 , .,P L Các đi m Pể i , i=0,1, .,L đ c g i là các ượ ọ đi m ki m soátể ể hay các đi m Bezier.ể Đa giác t o b i các đi m ki m soát này g i là ạ ở ể ể ọ đa giác ki m soátể hay đa giác Bezier. 6.1.2. D ng Bernstein c a các đ ng cong Bezierạ ủ ườ 70 Ch ng VI. ươ Thi t k đ ng cong và m t cong Bezier và B-Splineế ế ườ ặ Đ ng cong Bezier d a trên (L+1) đi m ki m soát Pườ ự ể ể 0 ,P 1 , .,P L đ c cho b i côngượ ở th c:ứ P(t) = k L = ∑ 0 P k .B k L (t) Trong đó, P(t) là m t đi m trong m t ph ng ho c trong không gian.ộ ể ặ ẳ ặ B k L (t) đ c g i là đa th c Bernstein, đ c cho b i công th c:ượ ọ ứ ượ ở ứ B k L (t) = L k L k ! !( )!− (1-t) L-k .t k v i L ớ ≥ k M i đa th c Bernstein có b c là L. Thông th ng ta còn g i các Bỗ ứ ậ ườ ọ k L (t) là các hàm tr nộ (blending function). T ng t , đ i v i m t Bezier ta có ph ng trình sau:ươ ự ố ớ ặ ươ P(u,v) = i M = ∑ 0 i L = ∑ 0 P i,k .B i M (u).B k L (v) Trong tr ng h p này, kh i đa di n ki m soát s có (M+1).(L+1) đ nh.ườ ợ ố ệ ể ẽ ỉ Đ ng cong Bezier b c 2ườ ậ Đ ng cong Bezier b c 3ườ ậ Hình 6.1 6.1.3. D ng bi u di n ma tr n c a đ ng Bezierạ ể ễ ậ ủ ườ Đ thích h p cho vi c x lý trên máy tính, ta bi u di n hai m ng BL(t) và P nhể ợ ệ ử ể ễ ả ư sau: B L (t) = (B 0 L (t), B 1 L (t), ., B L L (t)) P = (P 0 ,P 1 , .,P L ) Do đó: P(t) = B L (t).P (tích vô h ng)ướ hay P(t) = B L (t).P T (P T là d ng chuy n v c a P)ạ ể ị ủ D i d ng đa th c, có th bi u di n Bướ ạ ứ ể ể ễ k L (t) nh sau:ư B k L (t) = a 0 + a 1 .t + a 2 .t 2 + . + a L .t L = (t 0 ,t 1 , .,t L ).(a 0 ,a 1 , .,a L ) Do đó P(t) có th bi u di n l i nh sau:ể ể ễ ạ ư 71 P 1 1 P 1 P 0 1 P 1 P 0 2 P 2 Ch ng VI. ươ Thi t k đ ng cong và m t cong Bezier và B-Splineế ế ườ ặ P(t) = Pow L (t).Bez L .P T V i:ớ • Pow L (t) = (t 0 ,t 1 , .,t L ) • Bez L là ma tr n bi u di n m ng Bậ ể ễ ả L (t) trong đó m i hàng i c a ma tr n ngỗ ủ ậ ứ v i các h s t ng ng (aớ ệ ố ươ ứ 0 ,a 1 , .,a L ) c a đa th c Bủ ứ i L (t) và t i v trí (i,j) trong ma tr nạ ị ậ Bez L có giá tr Bezị L (i,j) = (-1) j-i .C n i .C i j Ví dụ: Ma tr n Bezậ 3 cho các đ ng Bezier b c 3 ườ ậ Bez 3 = 1 0 0 0 3 3 0 0 3 6 3 0 1 3 3 1 − − − − 6.1.4. T o và v các đ ng Bezierạ ẽ ườ Đ t o ra m t đ ng cong Bezier t m t dãy các đi m ki m soát ta s áp d ngể ạ ộ ườ ừ ộ ể ể ẽ ụ ph ng pháp l y m u hàm p(t) các giá tr cách đ u nhau c a tham s t, ví d có thươ ấ ẫ ở ị ề ủ ố ụ ể l y ti = i/N, i=0,1, .,N. Khi đó ta s đ c các đi m P(tấ ẽ ượ ể i ) t công th c Bezier.ừ ứ N i các đi m này b ng các đo n th ng ta s đ c đ ng cong Bezier g n đúng.ố ể ằ ạ ẳ ẽ ượ ườ ầ Đ tính P(tể i ) ta có th áp d ng ma tr n c a P(t) trên trong đó ch có thành ph nể ụ ậ ủ ở ỉ ầ Pow L (t i ) là thay đ i, còn tích Bezổ L .P T v i P = (Pớ 0 ,P 1 , .,P L ) là không thay đ i.ổ Sau đây là th t c minh h a vi c v đ ng cong Bezier trong m t ph ng:ủ ụ ọ ệ ẽ ườ ặ ẳ Type Mang = array[0 50] of PointType; function tich(x,y:word):real; var s:real;i:word; begin if y<=1 then tich:=1 else begin s:=1; for i:=x to y do s:=s*i; tich:=s; end; end; function CLK(l,k:word):real; begin 72 Ch ng VI. ươ Thi t k đ ng cong và m t cong Bezier và B-Splineế ế ườ ặ CLk:=tich(k+1,l)/tich(1,l-k); end; function Xmu(x:real;mu:word):real; var i:word;s:real; begin if mu=0 then s:=1 else begin s:=1; for i:=1 to mu do s:=s*x; end; Xmu:=s; end; function BKL(t:real;l,k:word):real; begin BKL:=CLK(l,k)*xmu(1-t,l-k)*xmu(t,k); end; procedure Pt(t:real;L:word;A:Mang;var diem:PointType); var k:word;s,x,y:real; begin x:=0; y:=0; for k:=0 to L do begin s:=BKL(t,l,k); x:=x+A[k].x*s; y:=y+A[k].y*s; end; diem.x:=round(x); diem.y:=round(y); end; procedure Vebezier(A:Mang;L:integer); var i,SoDiem:word; Diem:PointType; dx,x:real; 73 Ch ng VI. ươ Thi t k đ ng cong và m t cong Bezier và B-Splineế ế ườ ặ begin sodiem:=100; dx:=1/sodiem; x:=0; if L>0 then begin for i:=1 to sodiem+1 do begin Pt(x,L,A,Diem); if i=1 then moveto(round(diem.x),round(diem.y)) else lineto(round(diem.x),round(diem.y)); x:=x+dx; end; end end; 6.1.5. Các tính ch t c a đ ng cong Bezierấ ủ ườ i/ N i suy đ c các đi m đ u và cu i.ộ ượ ể ầ ố Ch ng minhứ : Ta có: P(t) = k L = ∑ 0 P k .B k L (t) Do đó P(0) = k L = ∑ 0 P k .B k L (0) trong đó: B k L (0) = L k L k ! !( )!− (1-0) L-k .0 k ∀k ≠ 0 và k ≠ L = L k L k ! !( )!− .0 = 0 Vì v y,ậ P(0) = P 0 .B 0 L (0) + P L .B L L (0) = P 0 + 0 = P 0 Lý lu n t ng t cho P(1). Ta có P(1) = Pậ ươ ự L . ii/ Tính b t bi n Affine:ấ ế 74 Ch ng VI. ươ Thi t k đ ng cong và m t cong Bezier và B-Splineế ế ườ ặ Khi bi n đ i m t đ ng cong Bezier, ta không c n bi n đ i m i đi m trên đ ngế ổ ộ ườ ầ ế ổ ọ ể ườ cong m t cách riêng r mà ch c n bi n đ i các đi m ki m soát c a đ ng cong đóộ ẻ ỉ ầ ế ổ ể ể ủ ườ r i s d ng công th c Bernstein đ tái t o l i đ ng cong Bezier đã đ c bi n đ i.ồ ử ụ ứ ể ạ ạ ườ ượ ế ổ Ch ng minhứ : Gi s đi m P(t) bi n đ i Affine thành P’(t)ả ử ể ế ổ P’(t) = P(t).N + tr = k L = ∑ 0 P k .B k L (t).N + tr Trong đó: N: ma tr n bi n đ i.ậ ế ổ tr: vector t nh ti n.ị ế Xét đ ng cong ườ k L = ∑ 0 (P k .N + tr).B k L (t) (*) đ c t o ra b ng cách bi n đ i Affine các vector Pượ ạ ằ ế ổ k . Ta s ch ng minh đ ng congẽ ứ ườ này chính là P’(t). Khai tri n (*) ta có: ể k L = ∑ 0 P k .N.B k L (t) + k L = ∑ 0 tr.B k L (t) = k L = ∑ 0 P k .N.B k L (t) + tr. k L = ∑ 0 B k L (t) (**) Nh ng theo đa th c Bernstein thì ư ứ k L = ∑ 0 B k L (t) = (1-t+t) L = 1 nên s h ng th hai c aố ạ ứ ủ (**) s là tr.ẽ Vì v y, P’(t) n m trên đ ng cong Bezier t o ra b i các đi m ki m soát Pậ ằ ườ ạ ở ể ể k . iii/ Tính ch t c a bao l i: đ ng cong Bezier P(t) không bao gi đi ra ngoài bao l iấ ủ ồ ườ ờ ồ c a nó.ủ đây, bao l i c a các đi m ki m soát là t p đ nh nh nh t ch a t t c các đi mỞ ồ ủ ể ể ậ ỉ ỏ ấ ứ ấ ả ể ki m soát đó.ể Ch ng minhứ : Bao l i c a các đi m ki m soát cũng chính là t p h p các t h p l i c a cácồ ủ ể ể ậ ợ ổ ợ ồ ủ đi m ki m soát.ể ể Ta bi u di n t h p tuy n tính c a các đi m Pk:ể ễ ổ ợ ế ủ ể P(t) = k L = ∑ 0 a k .P k , a k ≥ 0 75 Ch ng VI. ươ Thi t k đ ng cong và m t cong Bezier và B-Splineế ế ườ ặ Do P(t) là t h p l i c a các đi m ki m soát ổ ợ ồ ủ ể ể ∀t ∈ [0,1] và k L = ∑ 0 B k L (t) = 1 Nên đ ng cong Bezier s n m trong bao l i c a các đi m ki m soát.ườ ẽ ằ ồ ủ ể ể iv/ Đ chính xác tuy n tính: ộ ế Đ ng cong Bezier có th tr thành m t đ ng th ng khi t t c các đi mườ ể ở ộ ườ ẳ ấ ả ể ki m soát n m trên m t đ ng th ng vì khi đó bao l i c a chúng là m tể ằ ộ ườ ẳ ồ ủ ộ đ ng th ng nên đ ng Bezier b k p vào bên trong bao l i nên nó cũng trườ ẳ ườ ị ẹ ồ ở thành đ ng th ng.ườ ẳ v/ B t kỳ m t đ ng th ng hay m t ph ng nào cũng luôn luôn c t đ ng congấ ộ ườ ẳ ặ ẳ ắ ườ Bezier ít l n h n so v i c t đa giác ki m soát.ầ ơ ớ ắ ể vi/ Đ o hàm c a các đ ng Bezier:ạ ủ ườ Ta có: (P(t))’ = L. k L = − ∑ 0 1 ∆P k .B k L-1 (t) , ∆P k = P k+1 - P k Do đó, đ o hàm c a đ ng cong Bezier là m t đ ng cong Bezier khác đ cạ ủ ườ ộ ườ ượ t o ra t các vector ki m soát ạ ừ ể ∆P k ( Ta ch c n l y các đi m ki m soát g c theoỉ ầ ấ ể ể ố t ng c p đ t o ra các đi m ki m soát cho (P(t))’.ừ ặ ể ạ ể ể 6.1.6. Đánh giá các đ ng cong Bezierườ B ng các đi m ki m soát, ta có th t o ra các d ng đ ng cong khác nhau b ngằ ể ể ể ạ ạ ườ ằ cách hi u ch nh các đi m ki m soát cho t i khi t o ra đ c m t d ng đ ng congệ ỉ ể ể ớ ạ ượ ộ ạ ườ mong mu n. Công vi c này l p đi l p l i cho đ n khi toàn b đ ng cong th a yêuố ệ ặ ặ ạ ế ộ ườ ỏ c u.ầ Tuy nhiên, khi ta thay đ i b t kỳ m t đi m ki m soát nào thì toàn b đ ng congổ ấ ộ ể ể ộ ườ b thay đ i theo. Nh ng trong th c t , ta th ng mong mu n ch thay đ i m t ít vị ổ ư ự ế ườ ố ỉ ổ ộ ề d ng đ ng cong g n khu v c đang hi u ch nh các đi m ki m soát.ạ ườ ở ầ ự ệ ỉ ể ể Tính c c b y u c a đ ng cong Bezier đ c bi u hi n qua các đa th c Bụ ộ ế ủ ườ ượ ể ệ ứ k L (t) đ u khác 0 trên toàn kho ng [0,1]. M t khác đ ng cong p(t) l i là m t t h p tuy nề ả ặ ườ ạ ộ ổ ợ ế tính c a các đi m ki m soát đ c gia tr ng b i các hàm Bủ ể ể ượ ọ ở k L (t) nên ta k t lu n r ngế ậ ằ m i đi m ki m soát có nh h ng đ n đ ng cong t t c các giá tr t ỗ ể ể ả ưở ế ườ ở ấ ả ị ∈ [0,1]. Do đó, hi u ch nh b t kỳ m t đi m ki m soát nào cũng s nh h ng đ n d ng c a toànệ ỉ ấ ộ ể ể ẽ ả ưở ế ạ ủ th đ ng cong.ể ườ 76 Ch ng VI. ươ Thi t k đ ng cong và m t cong Bezier và B-Splineế ế ườ ặ Đ gi i quy t bài toán này, ta s d ng m t t p h p các hàm tr n khác nhau. Cácể ả ế ử ụ ộ ậ ợ ộ hàm tr n này có ộ giá mang (support: kho ng mà trên đó hàm l y giá tr khác 0) ch làả ấ ị ỉ m t ph n c a kho ng [0,1]. Ngoài giá mang này chúng có giá tr là 0.ộ ầ ủ ả ị Th ng ta ch n các hàm tr n là các đa th c trên các giá mang đó, các giá mang nàyườ ọ ộ ứ k nhau. Nh v y, các hàm tr n chính là m t ề ư ậ ộ ộ t p các đa th c đ c đ nh nghĩa trênậ ứ ượ ị nh ng kho ng k nhauữ ả ề đ c n i l i v i nhau đ t o nên m t đ ng cong liên t c.ượ ố ạ ớ ể ạ ộ ườ ụ Các đ ng cong k t qu đ c g i là ườ ế ả ượ ọ đa th c riêng ph nứ ầ hay t ng ph n (piecewiseừ ầ polynomial). Ví d : ta đ nh nghĩa hàm g(t) g m 3 đa th c a(t), b(t), c(t) nh sau:ụ ị ồ ứ ư g(t) = [2,3] mang giaï coï t)- (3 2 1 =c(t) [1,2] mang giaï coï) 2 3 -(t - 4 3 =b(t) [0,1] mang giaï coï t 2 1 =a(t) 2 2 2 Giá mang c a g(t) là [0,3]ủ Các giá tr c a t ng v i ị ủ ứ ớ các ch n i ỗ ố c a các đo n g i là ủ ạ ọ nút (knut), ch ng h nẳ ạ t=0,1,2,3 là b n nút c a g(t). H n n a, t i các ch n i c a đ ng cong g(t) là tr n,ố ủ ơ ữ ạ ỗ ố ủ ườ ơ không b g p khúc. Do đó, ta g i đó là hàm ị ấ ọ Spline. V y, m t hàm Spline c p m là đa th c riêng ph n c p m có đ o hàm c p m -1ậ ộ ấ ứ ầ ấ ạ ấ liên t c m i nút.ụ ở ỗ D a trên tính ch t c a hàm Spline, ta có th dùng nó nh các hàm tr n đ t o raự ấ ủ ể ư ộ ể ạ đ ng cong p(t) d a trên các đi m ki m soát Pườ ự ể ể 0 , .,P L . Khi đó: P(t) = k L = ∑ 0 P k .g k (t) T ng quát hóa, ta xây d ng m t hàm p(t) v i L+1 đi m ki m soát nh sau:ổ ự ộ ớ ể ể ư V i m i đi m ki m soát Pớ ỗ ể ể k , ta có m t hàm tr n t ng ng Rộ ộ ươ ứ k (t) và t p các nútậ g i là vector nútọ T=(t 0 ,t 1 , .,t n ) v i tớ i ∈ R, t i ≤ t i+1 . Khi đó: P(t) = k L = ∑ 0 P k .R k (t) 6.2. Đ NG CONG SPLINE VÀ B-SPLINEƯỜ 6.2.1. Đ nh nghĩaị 77 Ch ng VI. ươ Thi t k đ ng cong và m t cong Bezier và B-Splineế ế ườ ặ Theo trên ta có: P(t) = k L = ∑ 0 P k .R k (t) (*) trong đó P k v i k=1 L là các đi m ki m soát.ớ ể ể R k (t) là các hàm tr n liên t c trong m i đo n con [tộ ụ ỗ ạ i , t i+1 ]và liên t c trênụ m i nút. M i Rỗ ỗ k (t) là m t đa th c riêng ph n.ộ ứ ầ Do đó đ ng cong p(t) là t ng c a các đa th c này, l y trên các đi m ki m soát.ườ ổ ủ ứ ấ ể ể Các đo n đ ng cong riêng ph n này g p nhau các đi m nút và t o cho đ ngạ ườ ầ ặ ở ể ạ ườ cong tr nên liên t c. Ta g i nh ng đ ng cong nh v y là ở ụ ọ ữ ườ ư ậ SPLINE. Cho tr c m t vector nút thì có th có nhi u h hàm tr n đ c dùng đ t o raướ ộ ể ề ọ ộ ượ ể ạ m t đ ng cong Spline có th đ nh nghĩa trên vector nút đó. M t h các hàm nh v yộ ườ ể ị ộ ọ ư ậ đ c g i là ượ ọ c sơ ở cho các Spline. Trong s các h hàm này, có m t c s c th mà các hàm tr n c a nó có giá mangố ọ ộ ơ ở ụ ể ộ ủ nh nh t và nh v y nó đem l i kh năng ki m soát c c b l n nh t. Đó là các ỏ ấ ờ ậ ạ ả ể ụ ộ ớ ấ B- Spline, v i B vi t t t c a ch Basic (c s ).ớ ế ắ ủ ữ ơ ở Đ i v i các hàm B-Spline, m i đa th c riêng ph n t o ra nó ố ớ ỗ ứ ầ ạ có m t c p mộ ấ nào đó. Do đó, thay vì dùng ký hi u Rk(t) cho các hàm riêng ph n này ta s ký hi u các hàmệ ầ ẽ ệ tr n này là ộ N k,m (t). Do đó các đ ng cong B-Spline có th bi u di n l i:ườ ể ể ễ ạ P(t) = k L = ∑ 0 P k .N k,m (t) TÓM L IẠ Đ xây d ng các đ ng cong B-Spline ta c n có:ể ự ườ ầ • M t vector nút T=(tộ 0 , t 1 , t 2 , .,t k+m-1 ). • (L+1) đi m ki m soát.ể ể • C p m c a các hàm B-Spline và công th c c b n cho hàm B-Spline Nấ ủ ứ ơ ả k,m (t) là: N k,m (t) = t t t t k k m k − − + − 1 .N k,m-1 (t) + t t t t k m k m k + + + − − 1 .N k+1,m-1 (t) v i k=0 Lớ Đây là m t công th c đ quy v i Nộ ứ ệ ớ k,L (t) = ≤ + laûi ngæåüc0 1 1kk ttt (Hàm h ng b ng 1 trên đo n (tằ ằ ạ k , t k+1 ) Đ i v i các m t B-Spline, ta có công th c bi u di n t ng t :ố ớ ặ ứ ể ễ ươ ự P(u,v) = i M = ∑ 0 k L = ∑ 0 P i,k .N i,m (u).N k,m (v) Nh n xétậ : Các đ ng Bezier là các đ ng B-Spline.ườ ườ 78 . đ ng cong và m t cong Bezier và B-Splineế ế ườ ặ Khi bi n đ i m t đ ng cong Bezier, ta không c n bi n đ i m i đi m trên đ ngế ổ ộ ườ ầ ế ổ ọ ể ườ cong. cong Bezier ủ ườ 70 Ch ng VI. ươ Thi t k đ ng cong và m t cong Bezier và B-Splineế ế ườ ặ Đ ng cong Bezier d a trên (L+1) đi m ki m soát Pườ ự ể ể 0