Podręcznik
4. Krzywe B-sklejane i krzywe NURBS
4.2. Krzywe B-sklejane dowolnego stopnia
Cały powyższy wywód, prowadzący do wyjaśnienia istoty krzywych B-sklejanych, celowo był przeprowadzony metodami czysto geometrycznymi. W ten sposób można było uniknąć podawania jakichkolwiek wzorów, co okazało się łatwe do zrobienia w przypadku sklejania krzywych niskiego stopnia. Konstrukcje geometryczne dla wyższych stopni krzywych są jednak daleko bardziej skomplikowane i trudne do uogólnienia. By metodę można było uogólnić, konieczne jest zastosowanie metody algebraicznej, wymagającej zdefiniowania tzw. funkcji B-sklejanych. Funkcje te definiuje się wzorami rekurencyjnymi:
\(N_{i,0}( u) =\begin{cases} 1\ dla\ u_{i} \leq u< u_{i+1} & \\ 0\ w\ przeciwnym\ razie & \end{cases}\)
\(N_{i,k}( u) =\frac{u-u_{i}}{u_{i+k} -u_{i}} \cdot N_{i,k-1}( u) +\frac{u_{i+k+1} -u_{i}}{u_{i+k+1} -u_{i+1}} \cdot N_{i+1,k-1}( u) \ ;\ \ \ \ \ \ \ dla\ k\ \geqslant 1\)
a następnie na ich podstawie wyznacza się krzywą dowolnego stopnia:
\({\mathbf{P}}\left(u\right)=\sum\mathbf{D}_iN_{i,k}\left(u\right)\ \ ;\ \ \ u_k\le\ u\le\ u_{n+1}\)
W tej właśnie ogólnej postaci krzywe B-sklejane zostały zaprezentowane przez twórców metody.
Do pełnej definicji krzywej potrzebny jest ciąg węzłów, czyli wartości parametru u:
\(\left(u_1,u_2,\ldots,u_{n+k}\right)\ \ \ ;\ \ gdzie\ \ \ u_i\le\ u_{i+1}\)
przy czym węzły wewnętrzne odpowiadają punktom sklejania krzywych.
Funkcje B-sklejane spełniają zależność
\(\sum\limits ^{n}_{i=0} N_{i,k}( u) =1\ \ \ ;\ \ \ u_{k} \leq u\leq u_{n+1}\)
Do wyznaczania funkcji B-sklejanych stosuje się najczęściej szybki i stabilny algorytm de Boora, bazujący na rekurencji zawartej w definicji funkcji B-sklejanych.
Rysunek 48. Algorytm de Boora: a) schemat ogólny; b) funkcje B-sklejane 0, 1, 2 i 3 stopnia – w kolejnych kolumnach, generowane algorytmem dr Boora.
Dane: T[1..n+k] - ciąg węzłów dla krzywej o wierzchołkach D0..Dn stopnia k, taki że T[j]=uj.
Dany też jest parametr u należący do przedziału <ui..ui+1>, zatem dana jest wartość i, która ten przedział określa.
Wynik:
Tablica B[1..k+1] zawierająca funkcje Ni-k,k(u),...,Ni,k(u) dla danego u.
UWAGA: krzywą B-sklejaną wyznacza się w przedziale <uk.. un+1>. Jeśli u=uk, należy przyjąć i=k; jeśli u=un+1, należy przyjąć i=n.
Algorytm de Boora
B[1]:=1
for j=1,...,k do
begin
a[j]:=T[i+j]-u
d[j]:=u-T[i+1-j]
saved:=0
for r:=1,...,j do
begin
term:=B[r]/(a[r]+d[j+1-r])
B[r]:=saved+a[r]*term
saved:=d[j+1-r]*term
end
B[j+1]:=saved
end
Wiemy już, że do zdefiniowania krzywych B-sklejanych potrzebny jest nie tylko wielobok kontrolny, ale również stopień krzywej oraz (czasem niejawnie, jak w przypadku konstrukcji geometrycznych z początku tego rozdziału) ciąg węzłów. Najważniejsze własności krzywych B-sklejanych można ująć następująco:
- Otwarta krzywa stopnia k zdefiniowana wielobokiem o n+1 wierzchołkach (o indeksach od 0 do n) składa się z (n-k+1) segmentów.
- Zamknięta krzywa zdefiniowana wielobokiem o n+1 wierzchołkach (z których pierwszy, o indeksie 0, pokrywa się z ostatnim, czyli tym o indeksie n) składa się z n segmentów, niezależnie od stopnia krzywej.
- Jeśli ciąg węzłów krzywej otwartej ma k-krotne węzły zewnętrzne (na końcach), to krzywa przechodzi przez końcowe wierzchołki wieloboku i jest styczna w tych punktach do boków wieloboku.
- Krzywa ma ciągłość rzędu (k-1) z wyjątkiem wielokrotnych węzłów wewnętrznych: każda wielokrotność takiego węzła zmniejsza stopień ciągłości o 1.
- Przesunięcie pojedynczego wierzchołka wieloboku powoduje zmianę co najwyżej (k+1) segmentów krzywej, a więc lokalnie wpływa na jej kształt.
- Jeśli wielobok jest wypukły, to odpowiadająca mu krzywa też jest wypukła.
- Krzywa leży wewnątrz obszaru będącego sumą wypukłych obszarów rozpiętych na kolejnych (k+1) wierzchołkach wieloboku.
- Aby przekształcić afinicznie krzywą (przesunąć, obrócić, przeskalować), wystarczy przekształcić jej wielobok i wygenerować z niego krzywą.
Jako podsumowanie własności krzywych B-sklejanych niech posłuży następujący poglądowy rysunek. Można wszystkie przedstawione tu przypadki sprawdzić w Aplikacji nr 9.
Rysunek 49. Krzywe B-sklejane różnych stopni, wszystkie zdefiniowane tym samym wielobokiem kontrolnym o 6 bokach. Na rysunku zaznaczono punkty sklejenia segmentów; a) krzywa 1 stopnia pokrywa się z wielobokiem; b) krzywa 2 stopnia jest styczna do boków wieloboku. c) krzywa 3 stopnia; d) krzywa 4 stopnia; e) krzywa 5 stopnia; f) krzywa 6 stopnia - jest pojedynczą krzywą Béziera.