Krzywa B-sklejana

Z Wikipedii, wolnej encyklopedii

Krzywa B-sklejana (ang. B-spline) – jedna z najczęściej stosowanych reprezentacji parametrycznych krzywych sklejanych. Angielska nazwa spline wzięła się z żargonu 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 łącznicy”.

Podstawy matematyczne[edytuj | edytuj kod]

Przykładowa krzywa 3. stopnia, wraz z punktami kontrolnymi. Kolorami czerwonym i niebieskim zaznaczono składowe krzywe wielomianowe

Krzywą B-sklejaną charakteryzują dwa parametry:

  • – stopień sklejanych krzywych wielomianowych (w praktyce zwykle niewielki, wynosi 2, 3 lub 4, rzadziej więcej),
  • – liczba podprzedziałów, na których definiowane są kolejne części krzywej.

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ęzyku angielskim jest nazywana non-uniform (np. NURBS), czyli krzywa jest niejednorodna/nierównomierna.

Otoczki wypukłe punktów kontrolnych krzywych wielomianowych

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 .

Wszystkie krzywe składowe leżą w otoczce wypukłej swoich punktów kontrolnych, stąd cała krzywa B-sklejana leży w obszarze będącym sumą otoczek.

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:

– 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 | edytuj kod]

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ągłością

Konstrukcja geometryczna krzywej B-sklejanej trzeciego stopnia[edytuj | edytuj kod]

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

Wielomianowa niejednorodna krzywa B-sklejane trzeciego stopnia (zbudowana z pięciu krzywych Béziera). Węzły: 0.0, 0.1, 0.4, 0.6, 0.8, 1.0

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:

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 | edytuj kod]

Linki zewnętrzne[edytuj | edytuj kod]

  • 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.