Krzywa B-sklejana

Z testwiki
Przejdź do nawigacji Przejdź do wyszukiwania

Krzywa B-sklejana (Szablon:Ang.) – jedna z najczęściej stosowanych reprezentacji parametrycznych krzywych sklejanych. Angielska nazwa Szablon:K 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 Szablon:K jest krzywa B-sklejana trzeciego stopnia. Angielska nazwa krzywych B-sklejanych – Szablon:K – jest skrótem od Szablon:K, co znaczy „funkcja bazowa łącznicy”.

Podstawy matematyczne

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

Krzywą B-sklejaną charakteryzują dwa parametry:

  • n – stopień sklejanych krzywych wielomianowych (w praktyce zwykle niewielki, wynosi 2, 3 lub 4, rzadziej więcej),
  • m – 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 p0,,pmn+1. Krzywa taka jest reprezentowana przez m2n 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 t[0,1], 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. Szablon:K) i spełniają one zależność uiui+1, 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 Szablon:K, 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 Szablon:K (np. [[NURBS|Szablon:J]]), 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:

p(t)=i=0mn1piNin(t)dla t[un,umn],

gdzie:

m+1 – liczba węzłów,
n – stopień krzywej,
pi – punkty kontrolne,
Nin(t)unormowana funkcja B-sklejana stopnia n.

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:

Nin(t)=(1)n+1(ui+n+1ui)j=ii+n+1(tuj)+nl=ii+n+1,lj(ujul)dla i=0,,mn1
Nin(t)=0,gdy (ui+n+1ui)=0
(tu)+n={0dla t<u1dla tu,n=0(tu)ndla tu,n>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:

Ni0(t)={1dla t[ui,ui+1)0w przeciwnym razie
Nin(t)=tuiui+nuiNin1(t)+ui+n+1tui+n+1ui+1Ni+1n1(t)dla n>0

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

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ą (p0,,p4), oraz wykresy funkcji bazowych Nin(t) (na wykresach kolorami zaznaczono dziedziny poszczególnych krzywych). Jeśli n=1 wówczas „sklejane” 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ągłością Cn.

Konstrukcja geometryczna krzywej B-sklejanej trzeciego stopnia

Krzywa B-sklejana jest reprezentowana przez mn 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.

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 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: hi=ui+1uidla i=0,,m1. 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
g0=h1h0+h1p1+h0h0+h1p2
fi=hi+hi+1hi1+hi+hi+1pi+1+hi1hi1+hi+hi+1pi+2dla i=1,,m2
gi=hi+1hi1+hi+hi+1pi+1+hi1+hihi1+hi+hi+1pi+2dla i=1,,m2
fm1=hm1hm1+hm2pm+hm2hm1+hm2pm+1
gm1=pm+1

Po wyznaczeniu punktów f i g wyznaczane są punkty ei:

e0=p0
ei+1=hi+1hi+hi+1gi+hihi+hi+1fi+1dla i=0,,m2
em=pm+2

Ostatecznie punkty kontrolne m krzywych Béziera 3. stopnia są wyznaczane przez kolejne punkty: ei,fi,gi,ei+1dla i=0,,m1.

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ż

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.

Szablon:Kontrola autorytatywna