Krzywa B-sklejana (ang. B-spline) jest jedną z najczęściej stosowanych reprezentacji parametrycznych krzywych sklejanych. Angielska nazwa spline (postulowana nazwa polska to splajn[1][2], lub łącznica) wzięła się z gwary kreślarzy i odnosiła do długiej elastycznej metalowej taśmy, której używano do rysowania samolotów, samochodów, statków itp. Zawieszając odpowiednio dobrane obciążniki można było uzyskać krzywą o ciągłości geometrycznej drugiego rodzaju. Odpowiednikiem matematycznym spline jest krzywa B-sklejana trzeciego stopnia. Angielska nazwa krzywych B-sklejanych – B-spline jest skrótem od basis spline function, co znaczy "funkcja bazowa splajnów".
Spis treści |
Krzywe B-sklejane, podobnie jak inne krzywe parametryczne używane w grafice komputerowej, są wyznaczane przez ciąg punktów kontrolnych
. Krzywa taka jest reprezentowana przez
krzywych wielomianowych stopnia
(mówi się wówczas, że krzywa B-sklejana jest
-tego stopnia), które łączone są z określoną ciągłością parametryczna, zazwyczaj
.
Krzywa jest określona na przedziale
, natomiast ciąg
wartości
dzieli ten przedział na podprzedziały, na których zdefiniowane są poszczególne krzywe wielomianowe. Wartości
są nazywane węzłami krzywej (ang. knot) i spełniają one zależność
, tzn. jest to niemalejący ciąg, a więc węzły mogą się powtarzać; najczęściej zakłada się także, że
i
.
Jeśli węzły dzielą przedział
na równe części, wówczas krzywa w j.ang jest określana jako uniform, co można tłumaczyć jako (krzywa) jednorodna/równomierna. Jeśli węzły dzielą przedział nierównomiernie to krzywa w j.ang. jest nazywna non-uniform (np. NURBS), czyli krzywa jest niejednorodna/nierównomierna. Niestety, nie ma tutaj dobrego, zgrabnego polskiego odpowiednika dla angielskich określeń.
Dowolny punkt na krzywej B-sklejanej jest dany równaniem, które wynika z algorytmu de Boora:
![p(t) = \sum_{i=0}^{m-n-1} p_i N_i^n(t) \quad \textrm{dla\ }t \in [u_n, u_{m-n}],](http://upload.wikimedia.org/wikipedia/pl/math/5/2/4/5240c8af20db7065d219c30cba2bf921.png)
gdzie:
— liczba węzłów,
— stopień krzywej,
— punkty kontrolne,
— unormowana funkcja B-sklejana stopnia
.Jeśli krzywa jest reprezentowana we współrzędnych jednorodnych, a więc punkty we współrzędnych kartezjańskich opisują funkcje wymierne, wówczas mamy do czynienia z wymiernymi krzywymi B-sklejanymi. Jeśli dodatkowo dopuszczony jest nierównomierny rozkład węzłów, to takie krzywe nazywane są krzywymi NURBS.
Unormowana funkcja B-sklejana jest przedstawiana za pomocą ilorazu różnicowego obciętych funkcji potęgowych:
dla 
gdy 
— obcięta funkcja potęgowa
Jest to jednak dość skomplikowana i nieporęczna forma, toteż w praktyce stosuje się równoważny, rekurencyjny wzór Mansfielda-de Boora-Coxa, będący podstawą algorytmu de Boora:


Ponieważ węzły mogą się powtarzać, więc mianowniki w powyższym wzorze mogą się zerować, jednak zgodnie z definicją funkcji B-sklejanej w przypadku gdy przedział jest zerowy, to również wartość funkcji jest równa zero, zatem jeden ze składników sumy znika i nie jest w ogóle rozpatrywany.
Na rysunku poniżej przedstawiono przykładowe jednorodne krzywe B-sklejane różnych stopni (węzły oznaczono czarnymi kropkami) opisane tą samą łamaną kontrolną (
), oraz wykresy funkcji bazowych
(na wykresach kolorami zaznaczono dziedziny poszczególnych krzywych). Jeśli
wówczas "sklejane" są odcinki, identyczne z łamaną kontrolną krzywej. Dla
krzywa B-sklejana jest przybliżana kilkoma kawałkami krzywych wielomianowych odpowiednich stopni, połączonych z ciąglością
.
Krzywa B-sklejana jest reprezentowana przez
krzywych Béziera, jednak punkty kontrolne nie wystarczają do właściwego wyznaczenia takiej liczby krzywych. Trzeba znaleźć dodatkowe punkty, które pozwolą skonstruować wszystkie krzywe Béziera 3. stopnia w taki sposób by była zachowana ciągłość parametryczna
, tzn. aby:
Pierwszy warunek ciągłości jest zapewniony dzięki temu, że końce krzywych są jednakowe, umieszczone w punktach
. Drugi warunek ciągłości (równe pierwsze pochodne) gwarantuje współliniowość punktów
,
,
. Natomiast trzeci warunek (równe drugie pochodne) odpowiednie umiejscowienie punktów
i
.
Jak sugeruje rysunek dodatkowe punkty
,
oraz
otrzymuje się przez "obcięcie" narożników. Odbywa się to podobnie jak w algorytmie de Casteljau, ale tutaj ma działanie lokalne i współczynniki podziału odcinków zależą od węzłów.
Pierwszym krokiem jest obliczenie długości przedziałów wyznaczanych przez węzły:
. W przypadku krzywych jednorodnych, tzn. takich dla których szerokości przedziałów
są jednakowe poniższe wzory znacznie się upraszczają - ułamki są bowiem zastępowane stałymi:
,
lub
.
Kolejne punkty wyznacza się zgodnie z zależnościami:






Po wyznaczeniu punktów
i
wyznaczane są punkty
:



Ostatecznie punkty kontrolne
krzywych Béziera 3. stopnia są wyznaczane przez kolejne punkty:
dla
.
Wzory wyznaczające punkty dla krzywych krańcowych są nieco prostsze gdyż tylko w jednym punkcie muszą zostać spełnione warunki ciągłości. Natomiast krzywe znajdujące się "w środku" mają dwa punkty połączenia z innymi krzywymi, toteż warunki ciągłości muszą zostać spełnione dla obu tych punktów.