Đường cong Spline và B-Spline

Một phần của tài liệu Tài liệu đồ họa máy tính (Trang 126 - 129)

BÀI TẬP CHƯƠNG

2.6.2.Đường cong Spline và B-Spline

Với đường cong Bezier, 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 sốt cho tới khi cĩ được dạng đường cong thỏa mãn yêu cầu đặt ra ban đầu. Tuy nhiên, việc hiệu chỉnh thật khơng đơn giản chút nào nếu ta quan sát quá trình được mơ tả bằng hình 5.27, trong đĩ một phần của đường cong Bezier đã đúng và phần cịn lại thì cần phải hiệu chỉnh thêm.

Chúng ta cĩ 5 điểm kiểm sốt và đường cong Bezier được tạo ra từ chúng cĩ nét liền so với đường cong mà ta cần phải vẽ cĩ nét gạch đứt quãng. Ta nhận thấy rằng với t gần 0 thì đường cong Bezier cĩ vẻ khớp so với đường cong cần vẽ nhưng lại lệch khi t gần 1. Chúng ta sẽ di chuyển p2, p3 lên một tí để đường cong Bezier khớp với đường cần vẽ, tuy nhiên điều này lại gây ra hiệu ứng làm cho phần đầu của đường cong lệch đi.

Hình 5.27 – Hiệu chỉnh một đường cong

Như vậy, khĩ khăn ở đây là do khi ta thay đổi bất kì một điểm kiểm sốt nào thì tồn bộ đường cong cũng sẽ bị thay đổi theo. Điều này thật dễ hiểu do tất cả các đa thức Bernstein đều khác 0 trên tồn đoạn [0,1].

Để giải quyết bài tốn này ta sẽ sử dụng một tập các hàm trộn khác nhau R0(t), R1(t), ... chứ khơng phải chỉ một hàm BkL(t) như trong trường hợp Bezier. Các hàm trộn này cĩ giá mang (đoạn trên đĩ hàm lấy giá trị khác 0) chỉ là một phần của đoạn [0, 1], ngồi giá mang này chúng cĩ giá trị là 0. Bằng cách này, đường cong chỉ phụ thuộc vào một số điểm kiểm sốt mà thơi.

Các hàm trộn mà ta đề cập đến ở đây chính là tập các đa thức được định nghĩa trên các đoạn kề nhau để khi nối lại với nhau tạo nên một đường cong liên tục. Các đường cong như vậy được gọi là đa thức riêng phần (piecewise polynomials).

(5.26)

Giá mang của g(t) là [0, 3], của a(t) là [0, 1], của b(t) là [1, 2], của c(t) là [2, 3].

Các điểm tại các đoạn đường cong gặp nhau được gọi là các điểm nối (joints), và giá trị t tại các điểm đĩ được gọi là nút (knot).

Cĩ thể kiểm chứng được g(t) liên tục tại mọi nơi trên giá mang của nĩ, nên đường cong tại các chỗ nối là trơn. g(t) là một ví dụ của hàm Spline.

Hình 5.28 – Các thành phần của một đa thức riêng phần

Định nghĩa hàm Spline

Một hàm Spline cấp M là một đa thức riêng phần cấp M cĩ các đạo hàm cấp (M-1) liên tục ở mỗi nút.

Rõ ràng theo định nghĩa thì g(t) là một Spline bậc hai.

Định nghĩa đường cong Spline

Ta xây dựng đường cong p(t) dựa trên (L+1) điểm kiểm sốt bằng cách sử dụng các hàm Spline làm các hàm trộn như sau :

c Xây dựng tập các nút t0, t1, .., với tiỴ R và ti £ ti+1.

Với mỗi điểm kiểm sốt pk ta kết hợp nĩ với một hàm trộn tương ứng là Rk(t). Rk(t) là đa thức riêng phần liên tục trên mỗi đoạn con [ti, ti+1] và liên tục tại mỗi nút.

Khi đĩ :

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.

Vấn đề được đặt ra tiếp ở đây : Cho trước một vector nút, cĩ tồn tại hay khơng 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 sốt phù hợp.

Câu trả lời là cĩ nhiều họ hàm như vậy, nhưng đặc biệt cĩ một họ hàm trộn cĩ giá mang nhỏ nhất đĩ là B-Spline (B là từ viết tắt của basis).

Định nghĩa đường cong B-Spline

Một đường cong B-Spline cấp m xây dựng dựa trên vector nút T và (L+1) điểm kiểm sốt pk cĩ dạng :

Trong đĩ Nk,m(t) là đa thức cĩ bậc (m-1) cĩ cơng thức đệ quy :

, k=0, 1, .., L

với

Các điểm ti cĩ thể được xác định theo nhiều cách khác nhau. Một trong các cách đĩ là cho ti = i, lúc này khoảng cách giữa các điểm nút là bằng nhau. Hay ta cĩ một cách định nghĩa khác :

với i = 0, …,L+m.

Một phần của tài liệu Tài liệu đồ họa máy tính (Trang 126 - 129)