Krzywa B-sklejana
Z Wikipedii
Krzywa B-sklejana (ang. B-spline) jest jedną z najczęściej stosowanych reprezentacji parametrycznych krzywych sklejanych. Angielska nazwa spline wzięła się z gwary kreślarzy i odnosiła do długiej elastycznej metalowej taśmy, którą 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 |
[edytuj] Podstawy matematyczne
Krzywe B-sklejane, podobnie jak inne krzywe parametryczna używane w grafice komputerowej, są wyznaczane przez ciąg punktów kontrolnych . Krzywa taka jest reprezentowana przez m − 2n krzywych wielomianowych stopnia n (mówi się wówczas, że krzywa B-sklejana jest n-tego stopnia), które łączone są z określoną ciągłością parametryczna, zazwyczaj Cn.
Krzywa jest określona na przedziale , natomiast ciąg m + 1 wartości ui dzieli ten przedział na podprzedziały, na których zdefiniowane są poszczególne krzywe wielomianowe. Wartości u 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 u0 = 0 i um = 1.
Jeśli węzły dzielą przedział [0,1] 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, 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:
- m + 1 — liczba węzłów,
- n — stopień krzywej,
- pi — punkty kontrolne,
- — unormowana funkcja B-sklejna stopnia n.
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-sklejna jest przedstawiana za pomocą ilorazu różnicowego obciętych funkcji potęgowych:
- dla
- gdy (ui + n + 1 − ui) = 0
- — 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.
[edytuj] Przykłady krzywych B-sklejanych
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 n = 1 wówczas "sklejne" są odcinki, identyczne z łamaną kontrolną krzywej. Dla n > 1 krzywa B-sklejana jest przybliżana kilkoma kawałkami krzywych wielomianowych odpowiednich stopni, połączonych z ciąglością Cn.
Linki zewnętrzne:
- 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
[edytuj] Konstrukcja geometryczna krzywej B-sklejanej trzeciego stopnia
Krzywa B-sklejana jest reprezentowana przez m − n 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 C2, 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 ei. Drugi warunek ciągłości (równe pierwsze pochodne) gwarantuje współliniowość punktów gi, ei + 1, fi + 1. Natomiast trzeci warunek (równe drugie pochodne) odpowiednie umiejscowienie punktów f i g.
Jak sugeruje rysunek dodatkowe punkty e, f oraz g 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 hi są jednakowe poniższe wzory znacznie się upraszczają - ułamki są bowiem zastępowane stałymi: 1 / 2, 1 / 3 lub 2 / 3.
Kolejne punkty wyznacza się zgodnie z zależnościami:
- f0 = p1
- gm − 1 = pm + 1
Po wyznaczeniu punktów f i g wyznaczane są punkty ei:
- e0 = p0
- em = pm + 2
Ostatecznie punkty kontrolne m krzywych Béziera 3. stopnia są wyznaczane przez kolejne punkty: ei,fi,gi,ei + 1 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.