B-spline

De testwiki
Salta a la navegació Salta a la cerca

En el camp matemàtic d'anàlisi numèrica, un B-spline és un spline que té suport mínim respecte a un grau, suavitat, i partició del domini donats. Els B-splines varen ser investigats a Plantilla:Segle per Nikolai Lobachevsky. Un teorema fonamental estableix que cada spline d'un grau, suavitat, i partició del camp donats, es pot representar de manera única com a combinació lineal de B-splines d'aquell mateix grau i suavitat, i sobre aquella mateixa partició.[1]

El terme "B-spline" va ser encunyat per Isaac Schoenberg i és una abreviatura de base spline.[2][3] els B-splines poden ser avaluats d'una manera numèricament estable amb l'algorisme de De Boor. S'han creat variants simplificades, potencialment més ràpides de l'algorisme de De Boor però pateixen d'estabilitat comparativament més baixa.[4][5]

En els camps d'informàtica de gràfics i d'infografia, el terme B-spline freqüentment es refereix a una corba spline parametritzada per funcions spline que s'expressen com combinacions lineals de B-splines (en el sentit matemàtic de damunt). Un B-spline és simplement una generalització d'una [corba de Bézier], i pot evitar el fenomen de Runge sense augmentar el grau del B-spline.

Definició

Donats m valors reals ti, anomenats nusos, amb

t0t1tm1

un B-spline de grau n és una corba paramètrica

𝐒:[tn,tmn1]d

composta per una combinació lineal de B-splines base bi,n de grau n

𝐒(t)=i=0mn2𝐏ibi,n(t)t[tn,tmn1].

Els punts 𝐏id s'anomenen punts de control o punts de Boor. Hi ha m−n-1 punts de control, i formen un embolcall convex.

Els m-n-1 B-splines base de grau n poden ser definits, per n =0,1...,m-2, utilitzant la fórmula de recurrència de De Boor Cox

bj,0(t):={1iftjt<tj+10otherwise,j=0,,m2
bj,n(t):=ttjtj+ntjbj,n1(t)+tj+n+1ttj+n+1tj+1bj+1,n1(t),j=0,,mn2.

Fixeu-vos que j+n+1 no pot excedir m-1, que limita tant j com n.

Quan els nusos són equidistants el B-splines es diu que és uniforme, altrament no-uniforme. Si dos nusos tj són idèntics, totes les formes 0/0 indeterminades que resulten es consideren que són 0.

Fixeu-vos que quan se suma un conjunt de B-splines adjacents de base de grau n s'obté, d'aquesta recurrència

j=jjbj,n(t)=ttjtj+ntjbj,n1(t)+j=j+1jbj,n1(t)+tj+n+1ttj+n+1tj+1bj+1,n1(t)

per a qualsevol suma amb 0j<jmn2.

Quan jj+n1 aquí, llavors aquesta suma és, per aquesta recurrència, idènticament igual a 1 dins del subrang limitadtj+nlimitatttj+1 (ja que aquest interval exclou els suports dels dos B-splines base en els termes separats als extrems d'aquesta suma).

B-spline Uniforme

Quan el B-spline és uniforme, la base de B-splines per a un grau donat n són còpies desplaçades l'un de l'altre. Una definició no recursiva alternativa per la base m−n-1 dels B-splines és

bj,n(t)=bn(ttj),j=0,,mn2

amb

bn(t):=n+1ni=0n+1ωi,n(tti)+n

i

ωi,n:=j=0,jin+11tjti

on

(tti)+n:={(tti)nif tti0if t<ti

és la funció potencial truncada.

B-spline Cardinal

Es defineixi B0 com la funció característica de [12,12], i Bk recursivament com el producte de convolució

Bk:=Bk1*B0,k=1,2,

llavors Bk s'anomenen B-splines cardinals (centrats). Aquesta definició es remunta a Isaac Schoenberg.

Bk té suport compacte [k+12,k+12] i és una funció parella. Com k els B-splines cardinals normalitzats tendeixen a la funció gaussiana.[6]

Notes

Quan el nombre de punts de control de De Boor és un més que el grau i t0==tn=0 i tn+1==t2n=1 (així t[0,1]), el B-Spline degenera en una corba de Bézier. En particular, la funció B-Spline base bi,n(t) coincideix amb el polinomi de Bernstein de grau de n-th.[7] La forma de les funcions base està determinada per la posició dels nodes. Una dilatació o una Translació dels vector de nodes no canvia les funcions base.

L'spline és contingut al embolcall convex dels seus punts de control.

Una base de B-splines de grau n

bi,n(t)

és diferent de zero només a l'interval [t i , t i+n+1 ] és a dir

bi,n(t)={>0sitit<ti+n+10altrament

En altres paraules si es manipula un punt de control que només es canvia el comportament local de la corba i no el comportament global com en les corbes de Bézier.

Exemples

B-spline Constant

El B-spline constant és l'spline més simple. Es defineix en només una amplitud de node i no és ni tan sols continu als nodes. És la funció característica pels diferents intervals entre nodes.

bj,0(t)=1[tj,tj+1]={1sitjt<tj+10altrament

B-spline Lineal

El B-spline lineal està definit en dos intervals entre nodes consecutius i és continu als nodes, però no diferenciable.

bj,1(t)={ttjtj+1tjsitjt<tj+1tj+2ttj+2tj+1sitj+1t<tj+20altrament

B-spline quadràtic uniforme

Els B-splines quadràtics amb vector de nodes uniforme és un tipus de B-splines que es fa servir sovint. La funció base es pot precalcular fàcilment, i en aquest cas, és igual per a cada segment.

bj,2(t)={12(ttj)2tjttj+1(ttj+1)2+(ttj+1)+12tj+1ttj+212(1(ttj+2))2tj+2ttj+30altrament

Posada en forma de matriu, és:[8]

𝐒i(t)=[t2t1]12[121220110][𝐩i1𝐩i𝐩i+1] per t[0,1],i=1,2m2

B-Spline Cúbic

La fórmula del B-spline per a un segment únic es pot escriure com:

𝐒i(t)=k=03𝐏i3+kbi3+k,3(t) t[0,1]

on Si és el segment i-èsim del B-spline, P és el conjunt de punts de control, i i k són els índexs dels punts de control locals. Un conjunt de punts de control serien Piw=(wixi,wiyi,wizi,wi) on el wi és el pes, que estira la corba cap al punt de control Pi quan augmenta o aparta la corba lluny del punt quan disminueix.

Un conjunt complet de segments de m-2 corbes (S3,S4...,Sm) definit per m +1 punts de control (P0,P1...,Pm,m3), com un B-spline en t estaria definit per:

𝐒(t)=i=0m1𝐏ibi,3(t)

on i és el número de punt de control i t és un paràmetre global que dona els valors dels nodes. Aquesta formulació expressa una corba B-spline com una combinació lineal de B-spline base, d'aquí el nom.

Hi ha dos tipus de B-splines - uniformes i no-uniformes. Un B-spline no uniforme és una corba on els intervals entre punts successius de control no són necessàriament iguals (les separacions entre els nodes del vector de nodes no són iguals). Una forma freqüent és quan l'amplada dels intervals es redueix successivament cap a zero, interpolant punts de control.

Comparació entre un B-spline cúbic uniforme (groc) i un spline cúbic d'Hermite (vermell fosc).

B-splines cúbics uniformes

Els B-splines cúbics amb un vector de nodes uniforme és la forma més habitualment emprada de B-splines. La funció base es pot precalcular fàcilment, i en aquest cas és igual per a cada segment. Posada en forma matricial, és:

𝐒i(t)=[t3t2t1]16[1331363030301410][𝐩i1𝐩i𝐩i+1𝐩i+2]

per a t[0,1]...

Vegeu també

Referències

Plantilla:Referències

Enllaços externs

  1. Plantilla:Ref-llibre
  2. Plantilla:Ref-llibre
  3. Gary D. Knott (2000), Interpolating cubic splines. Springer. p. 151
  4. Plantilla:Ref-publicació
  5. . Plantilla:Ref-publicació
  6. Brinks R: On the convergence of derivatives of B-splines to derivatives of the Gaussian function, Comp. Appl. Math., 27, 1, 2008
  7. Plantilla:Ref-llibre
  8. Plantilla:Ref-web