4. Krzywe B-sklejane i krzywe NURBS

4.4. Krzywe sklejane interpolujące 3 stopnia

Zasady definiowania krzywych  B-sklejanych i krzywych  NURBS przedstawione w poprzednich rozdziałach pozwalają na tworzenie złożonych krzywych wybranego stopnia o maksymalnie wysokiej klasie ciągłości metodą „ab initio” – za pomocą wierzchołków kontrolnych i dodatkowych danych (wagi, węzły) jednoznaczne definiujących krzywą. Taki sposób konstruowania gładkich krzywych jest bardzo wygodny na etapie projektowania koncepcyjnego, w pierwszej fazie stylizacji, gdy potrzebne jest wypracowanie wstępnego zarysu kształtu. Jednakże w dalszych etapach bardziej potrzebna okazuje się możliwość interpolacji krzywymi sklejanymi, gdy chcemy, by krzywa wynikowa przechodziła przez zadane punkty i miała  przy tym maksymalnie wysoką klasę ciągłości. Tych warunków nie spełniają krzywe interpolujące omówione w rozdziale 6, gdyż są one tylko klasy C1.

Istnieją jednak algorytmy interpolacji, które pozwalają wyznaczyć takie wektory pochodnych w węzłach interpolacji, że krzywa wynikowa będzie miała ciągłość C2. Załóżmy więc, że mamy następujące dane:

  • Pi, i=0..n - punkty dane (przez które przejść ma krzywa)
  • di= ui-ui-1 - odległości między węzłami (można przyjąć  di jako  odległość między punktami Pi-1 i P lub dla uproszczenia di=1 dla wszystkich i).

Konieczne jest więc narzucenie warunku równości wektorów drugich pochodnych w węzłach interpolacji, czyli w każdym punkcie danych poza krańcowymi.  Tak powstaje układ równań, który w postaci ogólnej można zapisać w postaci macierzowej:

 

\begin{bmatrix}
 & b_{0} & c_{0} &  &  &  &  &  & \\
 &  & a_{1} & b_{1} & c_{1} &  &  &  & \\
 &  &  & a_{2} & b_{2} & c_{2} &  &  & \\
 &  &  &  & \bullet  & \bullet  & \bullet  & \bullet  & \\
 &  &  &  &  & a_{n-1} & b_{n-1} & c_{n-1} & \\
 &  &  &  &  &  & a_{n} & b_{n} & 
\end{bmatrix} \cdot \begin{bmatrix}
P"_{0}\\
P"_{1}\\
P"_{2}\\
\bullet \\
P"_{n-1}\\
P"_{n}
\end{bmatrix} =\begin{bmatrix}
F_{0}\\
F_{1}\\
F_{2}\\
\bullet \\
F_{n-1}\\
F_{n}
\end{bmatrix}

 

gdzie Fi = (3*di+1/di)*(Pi-Pi-1) + (3*di/di+1)*(Pi+1-Pi),    i=1,...,n-1.

 

Macierz współczynników przy niewiadomych jest macierzą trójdiagonalną silnie dominującą (moduł elementu na głównej przekątnej jest większy niż suma modułów obu elementów sąsiednich w tym samym wierszu). Taki układ ma dokładnie jedno rozwiązanie, czyli wektor pochodnych [P0’, …, Pn’] , które można wyznaczyć metodą eliminacji Gaussa, która prowadzi do następującego algorytmu:

Algorytm interpolacji krzywą sklejaną 3 stopnia

h=1/bo

V0 = h*F0

for   i=0..n-1 begin

   si = h*ci

   h = 1/(bi+1-ai+1*si)

   Vi+1 = h*(Fi+1-ai+1*Vi)

end

Pn = Vn

for i=n-1..0

   Pi = Vi – si*Pi+1

Dwa równania w układzie z macierzą trójdiagonalną (pierwsze i ostatnie) muszą być jednak narzucone dodatkowo, gdyż z warunków równości drugich pochodnych mamy tylko n-1 równań. Najprostsza możliwość to narzucenie wektorów pochodnych na końcach krzywej:

F0 = P0’  wektor prędkości na początku krzywej

Fn = Pnwektor prędkości na końcu krzywej.

Na tej podstawie wyznaczamy współczynniki macierzy trójdiagonalnej:

 

\ b_{0} =1\ \ \ \ \ \ c_{0} =0\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \

b_{n} =1\ \ \ \ \ \ a_{n} =0\ \ \ \ \ \

 

\left. \ \begin{matrix}
\ a_{i} =d_{i+1} \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \\
b_{i} =2( d_{i} +d_{i+1}) \ \ \ \ \\
c_{i} =d_{i} \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 
\end{matrix}\right\} \ i=1,...,n-1

 

Tak otrzymane krzywe sklejane interpolujące 3 stopnia mają ciągłą krzywiznę, co można zobaczyć na wykresach wektora krzywizny.

 

Rysunek 53. Krzywe sklejane interpolujące wraz z wykresem wektora krzywizny – modeler Rhinoceros

Można dla nich wyznaczyć odpowiadające im wieloboki B-sklejane (tutaj tego rozwiązania nie omawiamy).  W tym momencie taka krzywa nie różni się więc niczym od krzywej zadanej "ab initio" za pomocą wierzchołków kontrolnych. Można ją modyfikować dwojako:

  • modyfikacja punktów kontrolnych lokalnie wpływa na kształt krzywej, co wynika z podanych już wcześniej własności krzywej B-sklejanej; jeśli więc krzywa jest stopnia 3, to zmieniają się tylko 4 krzywe składowe, położone najbliżej modyfikowanego punktu kontrolnego.
  • modyfikacja punktów sklejania krzywych (które w przypadku krzywej interpolującej są węzłami interpolacji) powoduje globalną zmianę całej krzywej, wszystkich jej krzywych składowych. Zmiany te są najbardziej widoczne w pobliżu punktów modyfikacji i maleją w bardziej oddalonych segmentach, ale można je zaobserwować w całym obszarze krzywej.

Rysunek 54. Modyfikacja krzywych sklejanych metodą zmiany wierzchołków kontrolnych i węzłów interpolacji – c)