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.