Podręcznik
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:
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*P’i+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 = Pn’ wektor prędkości na końcu krzywej.
Na tej podstawie wyznaczamy współczynniki macierzy trójdiagonalnej:
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)