Mặt cong Bezier

Một phần của tài liệu B SPLINE và ỨNG DỤNG TRONG đồ họa máy TÍNH (Trang 30 - 37)

6. Ý nghĩa khoa học của đề tài

2.2.2.Mặt cong Bezier

Ta có thể dùng các hàm trộn Bezier để mô tả và vẽ các mặt cong. Đối với các mặt cong, ta biểu diễn chúng dưới dạng tham số qua một hàm vector với 2 tham số là u, v. Dạng tổng quát của một mặt cong là [3]:

S(u,v) = (X(u,v),Y(u,v),Z(u,v))

<=> S(u,v) = X(u,v).i + Y(u,v).j + Z(u,v).k (2.14) Khi u, v biến thiên trên một khoảng nào đó thì các hàm X(u,v), Y(u,v) và Z(u,v) thay đổi giá trị, do đó làm cho vị trí của S(u,v) thay đổi trong không gian 3 chiều.

Ở đây, ta sẽ không biểu diễn các mặt cong bằng các hàm toán học tường minh mà sẽ biểu diễn chúng qua các điểm kiểm soát. Chẳng hạn:

S(u,v) = (l - v).((l - u).P00 + u.P10) + v.((l - u).P01 + u.P11) dùng 4 điểm kiểm soát ở 4 góc là Pij với các hàm trộn là tuyến tính theo u, v.

Đường cong Bezier trong không gian 3 chiều có thể được viết dưới dạng là một hàm của tham số v với K+l điểm kiểm soát tùy thuộc vào tham số u theo một cách nào đó. Chẳng hạn:

𝐶 𝑢, 𝑣 = 𝑃𝑖 𝑢 𝐵𝐸𝑍𝑖,𝑛 𝑣 (2.15)

𝐾 𝑖=0

Nghĩa là mỗi đường viền u là một đường cong Bezier chuẩn, nhưng ở những giá trị u khác nhau thì các điểm kiểm soát cũng nằm ở những vị trí khác nhau [3].

Khi u biến thiên thì mỗi điểm kiểm soát Pi(u) sẽ chạy trên một đường cong cụ thể. Do đó, mặt cong có thể xem như là một sự dịch chuyển hay trượt đường Bezier trong không gian.

Ta tưởng tượng một đa giác kiểm soát chuyển động trong không gian và thay đổi dạng khi chuyển động. Ở mỗi vị trí, đa giác này tạo nên một đường cong Bezier và do đó tạo thành mặt cong trong quá trình trượt. Giả sử ta có một mảng (n+1).(k+1) phần tử. Các điểm kiểm soát Pij, với 0 ≤ i ≤ n, 0 ≤ j ≤k gọi là khối đa diện kiểm soát (control polyhedron). Khi đó các điểm trên mặt cong Bezier S được tính theo công thức:

𝑆 𝑢, 𝑣 = 𝑃𝑖𝑗𝐵𝐸𝑍𝑖,𝑛 𝑢 𝐵𝐸𝑍𝑗 ,𝑘 𝑣 𝑘 𝑗 =0 𝑛 𝑖=0 (2.16)

Ta gọi đây là dạng tích Tensor cho băng Bezier.

Để có mặt cong Bezier từ các đường cong Bezier ta coi mảng (n+1).(k+1) các điểm kiểm soát Pij như là (n+1) mảng một chiều khác nhau, mỗi mảng gồm (k+1) điểm kiểm soát. Xây dựng đường cong Bezier từ (n+1) mảng điểm kiểm soát đó ta sẽ được (n+1) đường cong Bezier. Ta kí hiệu đường cong ứng với mảng điểm kiểm soát thứ i là Ci, 0 ≤ i ≤ n và phương trình tham số của Ci là Ci(v), 0 ≤ v ≤ 1.

Nói cách khác với mỗi giá trị 0 ≤ v ≤1 ta có (n+1) điểm nằm tương ứng trên các đường cong Ci, ta kí hiệu tập các điểm đó là {Ci(v)}, i=0, 1, ... n. Nếu ta tiếp tục sử dụng (n+1) điểm đó làm đa giác kiểm soát ta sẽ thu được một đường cong Bezier. Có thể tưởng tượng rằng khi v tăng từ 0 đến 1 ta sẽ được một lưới các đường cong Bezier, đó chính là mặt cong Bezier như minh hoạ trong Hình 2.3.

Hình 2.3: Mặt cong Bezier

2.3. Đƣờng cong B-Spline

2.3.1. Đánh giá đƣờ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. Thực tế, ta thường mong muốn không phải thay đổi nhiều về dạng đường cong ở khu vực đang hiệu chỉnh các điểm kiểm soát. Mặt khác đường cong C(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 BEZ1,n(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.

Để 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á trị khác 0 trên một số đoạn xác định. Ngoài

P10 P13 P12 P11 C1(v) C1 P00 P01 P03 C0(v) P02 C0 P20 P22 P21 P22 C2 C2(v) V P30 P33 P32 P31 C3 C3(v)

đoạn đó, hàm mang 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 đoạn đó, các đoạn này là 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 fg 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ụ 2.1: Xét hàm g(t) gồm 3 đa thức a(t), b(t), c(t) như sau:

𝑔 𝑡 = 𝑎 𝑡 = 12𝑡2 𝑡𝑟ê𝑛 đ𝑜𝑛 0; 1 (2.17𝑎) 𝑏 𝑡 = −𝑡2 − 3𝑡 +32 = 34− (𝑡 −32 )2 𝑡𝑟ê𝑛 đ𝑜𝑛 1; 2 (2.17b) 𝑐 𝑡 = 12𝑡2 − 3𝑡 + 92 = 12(𝑡 − 3)2 𝑡𝑟ê𝑛 đ𝑜𝑛 2; 3 (2.17c) Ta có đồ thị g(t) như trong Hình 2.4:

Hình 2.4: Các thành phần của đa thức riêng phần

Các điểm mà tại đó, các đoạn đường cong gặp nhau được gọi là các điểm nối (joints). 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 {0, 1, 2, 3} là bốn nút của g(t). Có thể kiểm chứng được g(t) liên tục tại mọi nơi trên đoạn [0,3], nên đường cong tại các chỗ nối là trơn, không bị gấp khúc, g(t) là một ví dụ của hàm Spline.

Như vậy, một hàm Spline bậc m là đa thức riêng phần bậc m có đạo hàm bậc m-1 liên tục ở mỗi nút. [3] g(t) b(t) a(t) 1 3/4 1/2 1 2 3 0 t c(t) 1/4 3/2

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 C(t) dựa trên các điểm kiểm soát P0, P1, ...,Pn. Khi đó:

𝐶 𝑡 = 𝑃𝑖𝑔𝑖(𝑡)

𝑛 𝑖=0 (adsbygoogle = window.adsbygoogle || []).push({});

(2.18)

Tổng quát, ta xây dựng đường cong C(t) với n điểm kiểm soát bằng cách với mỗi điểm kiểm soát Pi , ta có một hàm trộn tương ứng Ri(t) và tập các nút gọi là vector nút T = (t0, ti, ..., tz) với ti∈ R, ti≤ ti+1. Khi đó:

𝐶 𝑡 = 𝑃𝑖𝑅𝑖 𝑡 (2.19)

𝑛 𝑖=0

Các đoạn đường cong riêng phần này gặp nhau tại các điểm nút và làm cho đường cong liên tục. Ta gọi những đường cong như vậy là đường cong Spline.

2.3.2. Đƣờng cong B-Spline

2.3.2.1. Hàm cơ sở B-Spline

Cho trước một vector nút T = (t0, ti, ...,tz) với ti ∈ R, ti ≤ ti+1, khi đó tồn tại một họ các hàm trộn sao cho chúng có thể phát sinh ra mọi đường cong Spline được đị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 Spline, nghĩa là bất kì đường cong Spline nào cũng có thể được đưa về cùng một công thức bằng cách chọn đa giác kiểm soát phù hợp.

Với mỗi vector có nhiều họ hàm như vậy, nhưng đặc biệt có một họ hàm trộn có đoạn mang giá trị khác 0 nhỏ nhất đó là B-Spline (B là từ viết tắt của basic). Đố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 bậc m nào đó. Do đó, thay vì dùng ký hiệu Ri(t) như trong công thức (2.17) 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à Nk,m(t). Khi đó, một đường cong B-Spline bậc m-1 được xây dựng dựa trên vector nút T và (n + l) điểm kiểm soát Pi có dạng :

𝐶 𝑡 = 𝑃𝑖

𝑛 𝑖=0

𝑁𝑖,𝑚 𝑡 (2.20)

Trong đó:

Ni,m(t) gọi là hàm Cox-de Boor hay hàm cơ sở B-Spline có cấp m (order m) và bậc (m-1) (degree m-1) là phương pháp chuẩn để định nghĩa hàm cơ sở B-Spline. Ni,m(t) được cho bởi công thức đệ quy:

𝑁𝑖,1 𝑡 = 1 𝑛ế𝑢 𝑡𝑖 ≤ 𝑡 < 𝑡𝑖+1 0 𝑣𝑖 𝑡 𝑐ò𝑛 𝑙𝑖 𝑁𝑖,𝑚 𝑡 = 𝑡− 𝑡𝑖 𝑡𝑖+𝑚 −1 −𝑡𝑖𝑁𝑖,𝑚 −1 𝑡 + 𝑡𝑖+𝑚 − 𝑡 𝑡𝑖+𝑚 − 𝑡𝑖+1𝑁𝑖+1,𝑚−1 𝑡 (2.21) i = 0, 1, …,n.

Ta sẽ khảo sát hàm này để hiểu rõ tính chất hình học của chúng. Đặt ∇ là khoảng cách giữa hai điểm nút.

∇𝑖= 𝑡𝑖+1 − 𝑡𝑖 (2.22)

Khi đó khoảng cách từ nút thứ i đến nút thứ i+k là Với m = 2, ta có: 𝑁𝑖,2 𝑡 = 𝑡 − 𝑡𝑖 𝑡𝑖+1 − 𝑡𝑖𝑁𝑖,1 𝑡 + 𝑡𝑖+2 − 𝑡 𝑡𝑖+2 − 𝑡𝑖+1𝑁𝑖+1,1 𝑡 = = 𝑡−𝑡𝑖 ∇𝑖 , 𝑣𝑖 𝑡𝑖 ≤ 𝑡 < 𝑡𝑖+1 𝑡𝑖+2−𝑡 ∇𝑖+1 , 𝑣𝑖 𝑡𝑖+1 ≤ 𝑡 < 𝑡𝑖+2 0, 𝑣𝑖 𝑐á𝑐 𝑔𝑖á 𝑡𝑟 𝑡 𝑘ℎá𝑐 (2.23)

Hình 2.5: Đường cong B-Spline

Việc xác định các vector nút sẽ phụ thuộc vào sự phân loại của chính bản thân chúng và điều đó sẽ ảnh hưởng đến hình dạng của đường cong được mô tả. Có các loại đường cong như sau [2]:

 Đều tuần hoàn (uniform)

 Không tuần hoàn (open or unperodic)

 Không đều (non-uniform)

2.3.2.2.Tính chất của đường cong B-Spline

Hàm B-Spline thực chất là dùng làm hàm trộn cho đường cong Bezier nên các tính chất của đường cong Bezier cũng thỏa cho đường cong B-Spline:

 Các đường B-Spline bậc m là các đa thức riêng phần bậc m. Chúng là các Spline. -0.5 0 0.5 1 1.5 2 2.5 3 -1 -0.5 0 0.5 1 1.5 2 2.5 3 3.5

 Các hàm B-Spline bậc m tạo thành một cơ sở cho bất kỳ Spline nào có cùng bậc được định nghĩa trên cùng các nút. Các Spline có thể được biểu diễn như một tổ hợp tuyến tính của các B-Spline.

 Một đường cong B-Spline đóng dựa trên (n+l) điểm kiểm soát có thể tạo ra bằng cách dùng phương trình đường B-Spline tuần hoàn sau:

𝐶 𝑡 = 𝑃𝑖

𝑛 (adsbygoogle = window.adsbygoogle || []).push({});

𝑖=0

𝑁0,𝑚 𝑡 − 𝑖 𝑚𝑜𝑑(𝑛 + 1) (2.24)

Với giả thiết các nút cách đều nhau trong định nghĩa của hàm N0,m(t).

 Mỗi hàm B-Spline Ni,m(t) là không âm ∀𝑡.

 Các đường cong dựa trên các B-Spline là bất biến Affin. Do đó, để biến đổi một đường cong B-Spline, chỉ cần biến đổi các điểm kiểm soát, sau đó khởi tạo lại đường cong từ các điểm kiểm soát đã được biến đổi này.

 Một đường cong B-Spline sẽ nằm trong bao lồi của các điểm kiểm soát.

 Độ chính xác tuyến tính của đường cong B-Spline: Nếu m điểm kiểm soát kề nhau là tuyến tính cùng nhau thì bao lồi của chúng là một đường thẳng. Do đó đường cong cũng sẽ trở thành đường thẳng.

 Tính chất giảm độ biến thiên: số giao điểm giữa đường cong B-Spline với bất kỳ một mặt phẳng nào (nếu có) luôn luôn nhỏ hơn số giao điểm (nếu có) giữa đa giác kiểm soát của nó với mặt phẳng đó.

 Trong đường cong B-Spline, số lượng các nút, bậc của đường cong và số điểm điều khiển luôn có các quan hệ ràng buộc:

0 ≤ 𝑡 ≤ 𝑛 − 𝑚 + 2 (2.25)

Một phần của tài liệu B SPLINE và ỨNG DỤNG TRONG đồ họa máy TÍNH (Trang 30 - 37)