Krzywa B-sklejana
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 |
Podstawy matematyczne [edytuj]
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:
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.
Przykłady krzywych B-sklejanych [edytuj]
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ą
.
Konstrukcja geometryczna krzywej B-sklejanej trzeciego stopnia [edytuj]
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:
- krańcowe punkty kontrolne dwóch kolejnych krzywych Béziera pokrywały się,
- pierwsze pochodne obu krzywych były w punkcie połączenia równe,
- drugie pochodne obu krzywych były w punkcie połączenia równe.
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.
Zobacz też [edytuj]
Linki zewnętrzne [edytuj]
- Interaktywna prezentacja krzywych B-sklejanych zrealizowana z użyciem Processing.js
- Interaktywne aplety Javy — na stronie znajdują się interaktywne aplety Javy rysujące krzywe B-sklejane, w których można przemieszczać zarówno punkty kontrolne jak i zmieniać wartości węzłów.
Przypisy
- ↑ Słownik Mirosława "Mirnala" Nalezińskiego – o zgodności słowa splajn z normami jęz. polskiego
- ↑ splajn w słowniku krzyżówkowym
![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/math/5/2/4/5240c8af20db7065d219c30cba2bf921.png)
— punkty kontrolne,
dla 
gdy 
— obcięta funkcja potęgowa









