4. Krzywe B-sklejane i krzywe NURBS

4.1. Krzywe B-sklejane 3 i 2 stopnia

Krzywe B-sklejane 3 stopnia otrzymujemy, gdy połączymy ze sobą krzywe Béziera z zachowaniem ciągłości 2 pochodnej (wyższego stopnia ciągłości już się nie da dla takich krzywych uzyskać). Aby uzasadnić konstrukcję, która do nich prowadzi, przyjrzyjmy się zasadom wyznaczania wektora drugiej pochodnej na końcach krzywej (Rysunek 42 a i b) oraz zasadom połączenia dwóch krzywych z warunkiem ciągłości tego wektora (Rysunek 42 c):

Rysunek 42. Zasada wyznaczania wektora drugiej pochodnej: a) w punkcie początkowym; b) w punkcie końcowym krzywej Béziera; c) zasada łączenia 2 krzywych Béziera z ciągłością wektora drugiej pochodnej (C2). Jednakowe odcinki na rys. c) zaznaczono: w kroku 1 - dwiema kreskami (to zapewnia ciągłość C1), w kroku 2 – wężykiem, w kroku 3 – znakiem x (dodanie tych kroków prowadzi do ciągłości C2).

 

Wykonajmy teraz analogiczną konstrukcję dla 3 połączonych ze sobą krzywych Béziera 3 stopnia (Rysunek 43a), a następnie  usuńmy wierzchołki Béziera i pozostawmy tylko wierzchołki pomocnicze - staną się one wierzchołami jednoznacznie definiującymi nową krzywą (Rysunek 43b). Jednoznacznie - bo jednoznaczna jest konstrukcja, która pozwala uzyskać z nich wierzchołki Béziera. Te nowe wierzchołki kontrolne, definiujące krzywą B-sklejaną, nazywane są w skrócie wierzchołkami B-sklejanymi.

 

Rysunek 43. a) Krzywa złożona z 3 krzywych Béziera 3 stopnia połączonych z narzuconym warunkiem ciągłości C2 w punkcie połączenia; b) Ta sama krzywa, ale zdefiniowana innymi punktami kontrolnymi - jako krzywa B-sklejana.

 

Krzywą B-sklejaną można modelować i edytować za pomocą wierzchołków kontrolnych (B-sklejanych) na podobnych zasadach, jak krzywe Béziera. Ta nowa metoda daje jednak znacznie więcej możliwości, które wkrótce szerzej omówimy. Na razie przyjrzyjmy się zasadom, które pozwalają wyznaczyć krzywą B-sklejaną jako ciąg sklejonych krzywych Béziera.

 

Z konstrukcji na Rysunek 43 wynika zasada wyznaczania krzywych Béziera z wieloboku B-spline. Jest to tzw. Algorytm Boehma:

 

Geometryczny algorytm Boehma dla otwartych krzywych 3 stopnia

  •  Pierwszy i ostatni bok wieloboku B-spline nie ulegają podziałowi.
  • Drugi i przedostatni bok wieloboku dzieli się na połowy.
  • Pozostałe boki dzieli się na 3 równe odcinki.
  • Otrzymane w ten sposób odcinki pomocnicze dzieli się na połowy.
  • Punkty podziału odcinków pomocniczych  są punktami sklejenia krzywych Béziera.

Geometryczny algorytm Boehma dla zamkniętych krzywych 3 stopnia

  • Wszystkie  boki dzieli się na 3 równe odcinki.
  • Otrzymane w ten sposób odcinki pomocnicze dzieli się na połowy.
  • Punkty podziału odcinków pomocniczych  są punktami sklejenia krzywych Béziera.

Rysunek 44. Algorytm Boehma dla krzywych B-sklejanych 3 stopnia - generowanie krzywej B-sklejanej metodą wyznaczania wierzchołków Béziera. Zakreskowane są wieloboki wypukłe kolejnych krzywych Béziera.

Metoda B-spline pozwala również w bardzo wygodny sposób definiować gładkie krzywe zamknięte. Algorytm wyznaczania wieloboków Béziera dla krzywej zamkniętej jest jeszcze prostszy (Rysunek 45):

Łatwo sprawdzić, że i w tym przypadku zachowana jest ciągłość wektora drugiej pochodnej w punktach sklejenia.

Rysunek 45. Algorytm Boehma dla krzywej zamknietej 3 stopnia. Zakreskowane są wieloboki wypukłe kolejnych krzywych Béziera.

Algorytm Boehma można również w analogiczny sposób wyprowadzić dla krzywych 2 stopnia (Rysunek 46a):

Porównajmy jeszcze tę konstrukcję z konstrukcją generującą dla tego samego wieloboku krzywą 3 stopnia (Rysunek 46b):

Rysunek 46 .a) Krzywa B-sklejana i jej podział na krzywe Béziera  algorytmem Boehma – punkty sklejenia zaznaczone są małymi niebieskimi kwadracikami:  a) krzywa 2 stopnia, w punktach sklejania ma ciągłość C1; b)  krzywa 3 stopnia, w punktach sklejania ma ciągłość C2. Wieloboki wypukłe krzywych składowych są zacieniowane.

I już tylko dla porządku ostatnia definicja:

Geometryczny algorytm Boehma dla zamkniętych krzywych 2 stopnia

  • Wszystkie boki wieloboku dzieli się na połowy.
  • Odcinków pomocniczych nie ma, punkty podziału boków są punktami sklejenia krzywych Béziera.

Przedstawione zasady można dobrze zrozumieć korzystając z Aplikacji nr 8, która dla dowolnego wieloboku generuje otwartą krzywą B-sklejaną wybranego stopnia. Na razie zajmijmy się tymi, które znamy, czyli krzywymi 2 i 3 stopnia (Rysunek 47):

Rysunek 47 – Aplikacja nr 8. Krzywe B-sklejane dowolnego stopnia.  Zmiany stopnia krzywej można dokonać w górnym okienku - należy jednak pamiętać, że do narysowania krzywej stopnia k potrzeba co najmniej k+1 wierzchołków. Dla krzywej a) 2 lub b) 3 stopnia można wyświetlić wektory krzywizny oraz wieloboki wypukłe (opcja Boehm). Wektory krzywizny wyraźnie pokazują, że krzywe 2 stopnia nie mają ciągłej krzywizny, zaś krzywe 3 stopnia mają ciągłość krzywizny gwarantowaną - z definicji.

Geometryczny algorytm Boehma dla otwartych krzywych 2 stopnia

  • Wszystkie boki wieloboku poza pierwszym i ostatnim dzieli się na połowy.
  • Odcinków pomocniczych nie ma, punkty podziału boków są punktami sklejenia krzywych Béziera.

W Aplikacji nr 8 dostępna jest również opcja Otoczka. Otoczka to obszar będący sumą wypukłych obszarów rozpiętych na kolejnych (k+1) wierzchołkach wieloboku kontrolnego krzywej B-sklejanej. Jest to obszar, w którym na pewno leży krzywa B-sklejana. To jedna z własności krzywych B-sklejanych, które będą omawiane w dalszej części tego rozdziału. Zauważmy jednak, że kolejne otoczki wyznaczone na podstawie algorytmu Boehma dla krzywych 2 lub 3 stopnia dużo dokładniej określają położenie krzywej. Dla wyższych stopni pozostaje nam jednak tylko opcja Otoczka.