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:
a następnie na ich podstawie wyznacza się krzywą dowolnego stopnia:
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:
przy czym węzły wewnętrzne odpowiadają punktom sklejania krzywych.
Funkcje B-sklejane spełniają zależność
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.