Articulo de referencia

B-spline

En análisis numérico , una B-spline (abreviatura de base spline) es un tipo de función spline diseñada para tener un soporte mínimo (superposición) para un grado , suavidad y co...

En análisis numérico , una B-spline (abreviatura de base spline) es un tipo de función spline diseñada para tener un soporte mínimo (superposición) para un grado , suavidad y conjunto de puntos de ruptura (nodos que dividen su dominio ) dados, lo que la convierte en un bloque de construcción fundamental para todas las funciones spline de ese grado. Una B-spline se define como un polinomio por partes de ordennorte{\displaystyle n}, lo que significa un grado denorte1{\displaystyle n-1}Se construye a partir de secciones que se encuentran en estos nodos, donde la continuidad de la función y sus derivadas depende de la frecuencia con la que se repite cada nodo (su multiplicidad). Cualquier función spline de un grado específico puede expresarse de forma única como una combinación lineal de B-splines de ese grado sobre los mismos nodos, [ 1 ] una propiedad que las hace versátiles en el modelado matemático. Un subtipo especial, las B-splines cardinales, utiliza nodos equidistantes .

El concepto de B-splines se remonta al siglo XIX, cuando Nikolai Lobachevsky exploró ideas similares en la Universidad de Kazán en Rusia, [ 2 ] aunque el término "B-spline" fue acuñado por Isaac Jacob Schoenberg [ 3 ] en 1967, reflejando su papel como funciones base . [ 4 ]

Las curvas B-spline se utilizan ampliamente en campos como el diseño asistido por ordenador (CAD) y los gráficos por ordenador , donde dan forma a curvas y superficies mediante un conjunto de puntos de control , así como en el análisis de datos para tareas como el ajuste de curvas y la diferenciación numérica de datos experimentales.

Curva spline dibujada como una suma ponderada de B-splines con puntos de control/polígono de control y curvas componentes marcadas.

Definición

B-spline cuadrático cardinal con vector de nodos (0, 0, 0, 1, 2, 3, 3, 3) y puntos de control (0, 0, 1, 0, 0), y su primera derivada.
B-spline cúbica cardinal con vector de nodos (−2, −2, −2, −2, −1, 0, 1, 2, 2, 2, 2) y puntos de control (0, 0, 0, 6, 0, 0, 0), y su primera derivada
B-spline cuártico cardinal con vector de nodos (0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 5, 5, 5, 5) y puntos de control (0, 0, 0, 0, 1, 0, 0, 0, 0), y sus primera y segunda derivadas

Una B-spline de ordenpag+1{\displaystyle p+1}es una colección de funciones polinómicas por partesBi,pag(t){\displaystyle B_{i,p}(t)}de gradopag{\displaystyle p}en una variablet{\displaystyle t}. Los valores det{\displaystyle t}donde se encuentran las partes del polinomio se conocen como nudos, denotadost0,t1,t2,,tmetro{\displaystyle t_{0},t_{1},t_{2},\ldots ,t_{m}}y ordenados en orden no decreciente.

Para una secuencia dada de nudos, existe, salvo un factor de escala, una única spline.Bi,pag(t){\displaystyle B_{i,p}(t)}satisfactorio

Bi,pag(t)={distinto de cerosi tit<ti+pag+1,0si t<titi+pag+1t.{\displaystyle B_{i,p}(t)={\begin{cases}{\text{no cero}}&{\text{si }}t_{i}\leq t<t_{i+p+1},\\0&{\text{si }}t<t_{i}\lor t_{i+p+1}\leq t.\end{cases}}}

Si añadimos la restricción adicional de que

i=0metropag1Bi,pag(t)=1{\displaystyle \sum _{i=0}^{mp-1}B_{i,p}(t)=1}

a pesar det{\displaystyle t}entre los nudostpag{\displaystyle t_{p}}ytmetropag{\displaystyle t_{mp}}, entonces el factor de escala deBi,pag(t){\displaystyle B_{i,p}(t)}se vuelve fijo. Los nudos intermedios (y sin incluir)tpag{\displaystyle t_{p}}ytmetropag{\displaystyle t_{mp}}se denominan nudos internos.

Las B-splines se pueden construir mediante la fórmula de recursión de Cox-de Boor. Comenzamos con las B-splines de gradopag=0{\displaystyle p=0}, es decir, polinomios constantes por partes.

Bi,0(t):={1si tit<ti+1,0de lo contrario.{\displaystyle B_{i,0}(t):={\begin{cases}1&{\text{si }}t_{i}\leq t<t_{i+1},\\0&{\text{en otro caso}}.\end{cases}}}

Cuanto más alto(pag+1){\displaystyle (p+1)}Las B-splines de grado - se definen mediante recursión.

Bi,pag(t):=ttiti+pagtiBi,pag1(t)+ti+pag+1tti+pag+1ti+1Bi+1,pag1(t).{\displaystyle B_{i,p}(t):={\dfrac {t-t_{i}}{t_{i+p}-t_{i}}}B_{i,p-1}(t)+{\dfrac {t_{i+p+1}-t}{t_{i+p+1}-t_{i+1}}}B_{i+1,p-1}(t).}

Propiedades

Una función B-spline es una combinación de bandas flexibles controladas por varios puntos, denominados puntos de control , que crean curvas suaves. Estas funciones se utilizan para crear y gestionar formas y superficies complejas mediante múltiples puntos. Las funciones B-spline y las funciones de Bézier se aplican ampliamente en métodos de optimización de formas . [ 5 ]

Una B-spline de ordennorte{\displaystyle n}es una función polinómica por partes de gradonorte1{\displaystyle n-1}en una variableincógnita{\displaystyle x}Se define sobrenorte{\displaystyle n}ubicacionesti{\displaystyle t_{i}}, llamados nudos o puntos de ruptura, que deben estar en orden no descendentetiti+1{\displaystyle t_{i}\leq t_{i+1}}. La B-spline contribuye solo en el rango entre el primero y el último de estos nodos y es cero en cualquier otro lugar. Si cada nodo está separado por la misma distanciah{\displaystyle h}(dóndeh=ti+1ti{\displaystyle h=t_{i+1}-t_{i}}) de su predecesor, el vector de nudos y las B-splines correspondientes se denominan "uniformes" (véase B-spline cardinal más abajo).

Para cada intervalo de nodo finito donde no es cero, una B-spline es un polinomio de gradonorte1{\displaystyle n-1}Una B-spline es una función continua en los nodos. [ nota 1 ] Cuando todos los nodos que pertenecen a la B-spline son distintos, sus derivadas también son continuas hasta la derivada de gradonorte2{\displaystyle n-2}. Si los nudos coinciden en un valor dado deincógnita{\displaystyle x}La continuidad del orden de la derivada se reduce en 1 por cada nudo coincidente adicional. Las B-splines pueden compartir un subconjunto de sus nudos, pero dos B-splines definidas sobre exactamente los mismos nudos son idénticas. En otras palabras, una B-spline se define de forma única por sus nudos.

Se distinguen nudos internos y puntos finales. Los nudos internos cubren losincógnita{\displaystyle x}-dominio de interés. Dado que una sola B-spline ya se extiende sobrenorte{\displaystyle n}nudos, se deduce que los nudos internos deben extenderse connorte1{\displaystyle n-1}Los puntos extremos en cada lado brindan soporte completo a la primera y última B-spline, las cuales afectan los intervalos de los nodos internos. Los valores de los puntos extremos no importan; generalmente, el primer o último nodo interno simplemente se repite.

La utilidad de las B-splines radica en el hecho de que cualquier función spline de ordennorte{\displaystyle n}En un conjunto dado de nodos, se puede expresar como una combinación lineal de B-splines:

Snorte,t(incógnita)=iαiBi,norte(incógnita).{\displaystyle S_{n,\mathbf {t} }(x)=\sum _{i}\alpha _{i}B_{i,n}(x).}

Las B-splines desempeñan el papel de funciones base para el espacio de funciones spline , de ahí su nombre. Esta propiedad se deriva del hecho de que todas las piezas tienen las mismas propiedades de continuidad, dentro de su rango de soporte individual, en los nodos. [ 6 ]

Las expresiones para las partes polinómicas se pueden derivar mediante la fórmula de recursión de Cox-de Boor [ 7 ].

Bi,0(incógnita):={1si tiincógnita<ti+1,0de lo contrario.{\displaystyle B_{i,0}(x):={\begin{cases}1&{\text{si }}t_{i}\leq x<t_{i+1},\\0&{\text{en otro caso}}.\end{cases}}}
Bi,k(incógnita):=incógnitatiti+ktiBi,k1(incógnita)+ti+k+1incógnitati+k+1ti+1Bi+1,k1(incógnita).{\displaystyle B_{i,k}(x):={\frac {x-t_{i}}{t_{i+k}-t_{i}}}B_{i,k-1}(x)+{\frac {t_{i+k+1}-x}{t_{i+k+1}-t_{i+1}}}B_{i+1,k-1}(x).}

Eso es,Bi,0(incógnita){\displaystyle B_{i,0}(x)}es una constante por partes, uno o cero, que indica en qué intervalo de nudos se encuentra x (cero si el intervalo de nudos i se repite). La ecuación de recurrencia consta de dos partes:

incógnitatiti+kti{\displaystyle {\frac {x-t_{i}}{t_{i+k}-t_{i}}}}

las rampas van de cero a uno a medida que x va deti{\displaystyle t_{i}}ati+k{\displaystyle t_{i+k}}, y

ti+k+1incógnitati+k+1ti+1{\displaystyle {\frac {t_{i+k+1}-x}{t_{i+k+1}-t_{i+1}}}}

las rampas van de uno a cero a medida que x va deti+1{\displaystyle t_{i+1}}ati+k+1{\displaystyle t_{i+k+1}}. Los valores de B correspondientes son cero fuera de esos rangos respectivos. Por ejemplo,Bi,1(incógnita){\displaystyle B_{i,1}(x)}es una función triangular que es cero por debajoincógnita=ti{\displaystyle x=t_{i}}, rampas a una enincógnita=ti+1{\displaystyle x=t_{i+1}}y volver a cero en y más alláincógnita=ti+2{\displaystyle x=t_{i+2}}Sin embargo, debido a que las funciones base B-spline tienen soporte local , las B-splines se calculan típicamente mediante algoritmos que no necesitan evaluar funciones base donde son cero, como el algoritmo de de Boor .

Esta relación conduce directamente al algoritmo BSPLV codificado en FORTRAN , que genera valores de las B-splines de orden n en x . [ 8 ] El siguiente esquema ilustra cómo cada pieza de orden n es una combinación lineal de las piezas de B-splines de orden n  1 a su izquierda.

000Bi2,2Bi1,1Bi,0Bi1,2Bi,10Bi,200{\displaystyle {\begin{matrix}&&0\\&0&\\0&&B_{i-2,2}\\&B_{i-1,1}&\\B_{i,0}&&B_{i-1,2}\\&B_{i,1}&\\0&&B_{i,2}\\&0&\\&&0\end{matrix}}}

Aplicación de la fórmula de recursión con los nudos en(0,1,2,3){\displaystyle (0,1,2,3)}proporciona los componentes por partes de la B-spline uniforme de orden 3

b0=incógnita2/2b1=(2incógnita2+6incógnita3)/2b2=(3incógnita)2/2{\displaystyle {\begin{aligned}b_{0}&=x^{2}/2\\b_{1}&=(-2x^{2}+6x-3)/2\\b_{2}&=(3-x)^{2}/2\end{aligned}}}

dónde

B0,2(incógnita)={b0si 0incógnita<1,b1si 1incógnita<2,b2si 2incógnita<3,0de lo contrario.{\displaystyle B_{0,2}(x)={\begin{cases}b_{0}&{\text{if }}0\leq x<1,\\b_{1}&{\text{if }}1\leq x<2,\\b_{2}&{\text{if }}2\leq x<3,\\0&{\text{otherwise}}.\end{cases}}}

Estas piezas se muestran en el diagrama. La propiedad de continuidad de una función spline cuadrática y su primera derivada en los nodos internos se ilustran de la siguiente manera:

En incógnita=1: b0=b1=0,5, db0dincógnita=db1dincógnita=1.En incógnita=2: b1=b2=0,5, db1dincógnita=db2dincógnita=1.{\displaystyle {\begin{aligned}&{\text{At }}x=1\colon \ b_{0}=b_{1}=0.5,\ {\frac {db_{0}}{dx}}={\frac {db_{1}}{dx}}=1.\\[6pt]&{\text{At }}x=2\colon \ b_{1}=b_{2}=0.5,\ {\frac {db_{1}}{dx}}={\frac {db_{2}}{dx}}=-1.\end{aligned}}}

La segunda derivada de una B-spline de grado 2 es discontinua en los nodos:

d2b0dincógnita2=1, d2b1dincógnita2=2, d2b2dincógnita2=1.{\displaystyle {\frac {d^{2}b_{0}}{dx^{2}}}=1,\ {\frac {d^{2}b_{1}}{dx^{2}}}=-2,\ {\frac {d^{2}b_{2}}{dx^{2}}}=1.}

Se han propuesto variantes más rápidas del algoritmo de De Boor, pero presentan una estabilidad comparativamente menor. [ 9 ] [ 10 ]

Spline B cardinal

Una B-spline cardinal tiene una separación constante h entre nodos. Las B-splines cardinales para un orden n dado son simplemente copias desplazadas unas de otras. Se pueden obtener a partir de la definición más simple. [ 11 ]

Bi,norte,t(incógnita)=incógnitatihnorte[0,,norte](ti)+norte1.{\displaystyle B_{i,n,t}(x)={\frac {x-t_{i}}{h}}n[0,\dots ,n](\cdot -t_{i})_{+}^{n-1}.}

La notación "marcador de posición" se utiliza para indicar que la n - ésima diferencia dividida de la función(tincógnita)+norte1{\displaystyle (t-x)_{+}^{n-1}}de las dos variables t y x se tomará fijando x y considerando(tincógnita)+norte1{\displaystyle (t-x)_{+}^{n-1}}como función únicamente de t .

Una B-spline cardinal tiene nodos espaciados uniformemente, por lo tanto, la interpolación entre los nodos equivale a una convolución con un núcleo de suavizado.

Por ejemplo, si queremos interpolar tres valores entre los nodos de B-spline (b{\displaystyle {\textbf {b}}}), podemos escribir la señal como

incógnita=[b1,0,0,b2,0,0,b3,0,0,,bnorte,0,0].{\displaystyle \mathbf {x} =[\mathbf {b} _{1},0,0,\mathbf {b} _{2},0,0,\mathbf {b} _{3},0,0,\dots ,\mathbf {b} _{n},0,0].}

Convolución de la señalincógnita{\displaystyle \mathbf {x} }con una función rectangularh=[1/3,1/3,1/3]{\displaystyle \mathbf {h} =[1/3,1/3,1/3]}proporciona valores B-spline interpolados de primer orden. La interpolación B-spline de segundo orden es una convolución con una función rectangular dos veces.y=incógnitahh{\displaystyle \mathbf {y} =\mathbf {x} *\mathbf {h} *\mathbf {h} }; mediante filtrado iterativo con una función rectangular, se obtiene una interpolación de orden superior.

La interpolación rápida de B-spline en un dominio de muestra uniforme se puede realizar mediante filtrado iterativo de la media. Alternativamente, una función rectangular es igual a sinc en el dominio de Fourier . Por lo tanto, la interpolación de spline cúbico es igual a multiplicar la señal en el dominio de Fourier por sinc 4 .

Consulte la distribución de Irwin-Hall#Casos especiales para expresiones algebraicas para las B-splines cardinales de grado 1-4.

P-spline

El término P-spline significa "B-spline penalizado". Se refiere al uso de la representación B-spline donde los coeficientes se determinan en parte por los datos que se van a ajustar y en parte por una función de penalización adicional que busca imponer suavidad para evitar el sobreajuste . [ 12 ]

Las aproximaciones de datos mediante P-splines bidimensionales y multidimensionales pueden utilizar el producto de división de caras de matrices para minimizar las operaciones de cálculo. [ 13 ]

Expresiones derivadas

La derivada de una B-spline de grado k es simplemente una función de B-splines de grado k  1: [ 14 ]

dBi,k(incógnita)dincógnita=k(Bi,k1(incógnita)ti+ktiBi+1,k1(incógnita)ti+k+1ti+1).{\displaystyle {\frac {dB_{i,k}(x)}{dx}}=k\left({\frac {B_{i,k-1}(x)}{t_{i+k}-t_{i}}}-{\frac {B_{i+1,k-1}(x)}{t_{i+k+1}-t_{i+1}}}\right).}

Esto implica que

ddincógnitaiαiBi,k=i=rk+2s1kαiαi1ti+ktiBi,k1en[tr,ts],{\displaystyle {\frac {d}{dx}}\sum _{i}\alpha _{i}B_{i,k}=\sum _{i=r-k+2}^{s-1}k{\frac {\alpha _{i}-\alpha _{i-1}}{t_{i+k}-t_{i}}}B_{i,k-1}\quad {\text{on}}\quad [t_{r},t_{s}],}

lo que demuestra que existe una relación simple entre la derivada de una función spline y las B-splines de grado uno menos.

Momentos de B-splines univariadas

Las B-splines univariadas, es decir, las B-splines donde las posiciones de los nodos se encuentran en una sola dimensión, se pueden utilizar para representar funciones de densidad de probabilidad unidimensionales.pag(incógnita){\displaystyle p(x)}. Un ejemplo es una suma ponderada dei{\displaystyle i}Funciones base B-spline de ordennorte{\displaystyle n}, cada una de las cuales está normalizada en área a la unidad (es decir, no se evalúa directamente utilizando el algoritmo estándar de De Boor)

pag(incógnita)=idoiBi,norte,norma(incógnita){\displaystyle p(x)=\sum _{i}c_{i}\cdot B_{i,n,{\textbf {norm}}}(x)}

y con restricción de constante de normalizaciónidoi=1{\displaystyle \sum _{i}c_{i}=1}. El k -ésimo momento en brutoμk{\displaystyle \mu _{k}}de una B-spline normalizadaBi,norte,norma{\displaystyle B_{i,n,{\textbf {norm}}}}se puede escribir como el promedio de Dirichlet de CarlsonRk{\displaystyle R_{k}}, [ 15 ] que a su vez puede resolverse exactamente mediante una integral de contorno y una suma iterativa [ 16 ] como

μk=Rk(metro;t)=incógnitakBi,norte,norma(incógnitat1tj)dincógnita=Γ(k+1)Γ(metro)Γ(metro+k)Dk(metro,t){\displaystyle \mu _{k}=R_{k}(\mathbf {m} ;\mathbf {t} )=\int _{-\infty }^{\infty }x^{k}\cdot B_{i,n,{\textbf {norm}}}(x\mid t_{1}\dots t_{j})\,dx={\frac {\Gamma (k+1)\Gamma (m)}{\Gamma (m+k)}}\cdot D_{k}(\mathbf {m} ,\mathbf {t} )}

con

Dk=1k=1k[(i=1jmetroiti)Dk]{\displaystyle D_{k}={\frac {1}{k}}\sum \limits _{u=1}^{k}\left[\left(\sum \limits _{i=1}^{j}m_{i}\cdot {t_{i}}^{u}\right)D_{k-u}\right]}

yD0=1{\displaystyle D_{0}=1}. Aquí,t{\displaystyle \mathbf {t} }representa un vector con elj{\displaystyle j}posiciones de nudos ymetro{\displaystyle \mathbf {m} }un vector con las multiplicidades de nodos respectivas. Por lo tanto, se puede calcular cualquier momento de una función de densidad de probabilidad.pag(incógnita){\displaystyle p(x)}representado exactamente mediante una suma de funciones base B-spline, sin recurrir a técnicas numéricas.

Relación con Bézier por partes/compuesto

Una curva de Bézier es también una curva polinómica definible mediante una recursión a partir de curvas de menor grado de la misma clase y codificada en términos de puntos de control, pero una diferencia clave es que todos los términos en la recursión para un segmento de curva de Bézier tienen el mismo dominio de definición (generalmente[0,1]{\displaystyle [0,1]}), mientras que los soportes de los dos términos en la recursión B-spline son diferentes (los subintervalos más externos no son comunes). Esto significa que una curva de Bézier de gradonorte{\displaystyle n}dado pormetronorte{\displaystyle m\gg n}Los puntos de control constan de aproximadamentemetro/norte{\displaystyle m/n}En su mayoría, los segmentos son independientes, mientras que la curva B-spline con los mismos parámetros realiza una transición suave entre subintervalos. Para obtener algo comparable a partir de una curva de Bézier, sería necesario imponer una condición de suavidad en las transiciones entre segmentos, lo que daría como resultado una especie de spline de Bézier (para la cual muchos puntos de control estarían determinados por el requisito de suavidad).

Una curva de Bézier compuesta/por partes es una serie de curvas de Bézier unidas con al menosdo0{\displaystyle C^{0}}continuidad (el último punto de una curva coincide con el punto de inicio de la siguiente curva). Dependiendo de la aplicación, se requieren suavidades adicionales (comodo1{\displaystyle C^{1}}odo2{\displaystyle C^{2}}Se puede añadir continuidad). [ 17 ]do1{\displaystyle C^{1}}Las curvas continuas tienen tangentes idénticas en el punto de quiebre (donde se encuentran las dos curvas).do2{\displaystyle C^{2}}Las curvas continuas tienen una curvatura idéntica en el punto de quiebre. [ 18 ]

Ajuste de curvas

Generalmente, en el ajuste de curvas , un conjunto de puntos de datos se ajusta a una curva definida por alguna función matemática. Por ejemplo, los tipos comunes de ajuste de curvas utilizan un polinomio o un conjunto de funciones exponenciales . Cuando no hay una base teórica para elegir una función de ajuste, la curva se puede ajustar con una función spline compuesta por una suma de B-splines, utilizando el método de mínimos cuadrados . [ 19 ] [ nota 2 ] Por lo tanto, la función objetivo para la minimización de mínimos cuadrados es, para una función spline de grado k ,

U=todo incógnita{W(incógnita)[y(incógnita)iαiBi,k,t(incógnita)]}2,{\displaystyle U=\sum _{{\text{all}}~x}\left\{W(x)\left[y(x)-\sum _{i}\alpha _{i}B_{i,k,t}(x)\right]\right\}^{2},}

donde W ( x ) es un peso, e y ( x ) es el valor de datos en x . Los coeficientesαi{\displaystyle \alpha _{i}}son los parámetros que deben determinarse. Los valores de los nudos pueden ser fijos o tratados como parámetros.

La principal dificultad en la aplicación de este proceso radica en determinar el número de nodos a utilizar y su ubicación. De Boor sugiere diversas estrategias para abordar este problema. Por ejemplo, el espaciado entre nodos se reduce proporcionalmente a la curvatura (segunda derivada) de los datos. Se han publicado algunas aplicaciones. Por ejemplo, se ha investigado el uso de B-splines para el ajuste de curvas lorentzianas y gaussianas simples . Se han calculado funciones spline óptimas de grados 3 a 7 inclusive, basadas en disposiciones simétricas de 5, 6 y 7 nodos, y el método se aplicó para el suavizado y la diferenciación de curvas espectroscópicas. [ 20 ] En un estudio comparable, la versión bidimensional del filtrado de Savitzky-Golay y el método spline produjeron mejores resultados que el filtrado de media móvil o de Chebyshev . [ 21 ]

Diseño asistido por ordenador y gráficos por ordenador

En las aplicaciones de diseño asistido por computadora y gráficos por computadora , una curva spline a veces se representa comodo(t){\displaystyle C(t)}, una curva paramétrica de algún parámetro realt{\displaystyle t}En este caso la curvado(t){\displaystyle C(t)}pueden tratarse como dos o tres funciones de coordenadas separadas.(incógnita(t),y(t)){\displaystyle (x(t),y(t))}, o(incógnita(t),y(t),z(t)){\displaystyle (x(t),y(t),z(t))}Las funciones de coordenadasincógnita(t){\displaystyle x(t)},y(t){\displaystyle y(t)}yz(t){\displaystyle z(t)}son cada una funciones spline, con un conjunto común de valores de nodos.t1,t2,,tnorte{\displaystyle t_{1},t_{2},\ldots ,t_{n}}.

Debido a que las B-splines forman funciones base, cada una de las funciones de coordenadas puede expresarse como una suma lineal de B-splines, por lo que tenemos

incógnita(t)=iincógnitaiBi,norte(t),Y(t)=iyiBi,norte(t),Z(t)=iziBi,norte(t).{\displaystyle {\begin{aligned}X(t)&=\sum _{i}x_{i}B_{i,n}(t),\\Y(t)&=\sum _{i}y_{i}B_{i,n}(t),\\Z(t)&=\sum _{i}z_{i}B_{i,n}(t).\end{aligned}}}

Los pesosincógnitai{\displaystyle x_{i}},yi{\displaystyle y_{i}}yzi{\displaystyle z_{i}}se pueden combinar para formar puntosPAGi=(incógnitai,yi,zi){\displaystyle P_{i}=(x_{i},y_{i},z_{i})}en el espacio 3D. Estos puntosPAGi{\displaystyle P_{i}}Se les conoce comúnmente como puntos de control.

Trabajando a la inversa, una secuencia de puntos de control, valores de nodos y orden de la B-spline definen una curva paramétrica. Esta representación de una curva mediante puntos de control tiene varias propiedades útiles:

  1. Los puntos de controlPAGi{\displaystyle P_{i}}define una curva. Si todos los puntos de control se transforman juntos de alguna manera, como por ejemplo trasladándolos, rotándolos, escalándolos o moviéndolos mediante cualquier transformación afín , entonces la curva correspondiente se transforma de la misma manera.
  2. Debido a que las B-splines no son cero solo para un número finito de intervalos de nodos, si se mueve un solo punto de control, el cambio correspondiente en la curva paramétrica se produce justo en el rango de parámetros de un pequeño número de intervalos de nodos.
  3. PorqueiBi,norte(incógnita)=1{\displaystyle \sum _{i}B_{i,n}(x)=1}y en todo momento cadaBi,norte(incógnita)0{\displaystyle B_{i,n}(x)\geq 0}Entonces, la curva permanece dentro del cuadro delimitador de los puntos de control. Además, en cierto sentido, la curva sigue a grandes rasgos los puntos de control.

Una característica menos deseable es que la curva paramétrica no interpola los puntos de control. Por lo general, la curva no pasa por los puntos de control.

Splines cúbicos B

Una curva B-spline cúbicado(t){\displaystyle \mathbf {C} (t)}con un parámetro normalizadot[0,1]{\displaystyle t\in [0,1]}se define mediante cuatro nodos (es decir, puntos de control )b0{\displaystyle {\textbf {b}}_{0}},b1{\displaystyle {\textbf {b}}_{1}},b2{\displaystyle {\textbf {b}}_{2}}, yb3{\displaystyle {\textbf {b}}_{3}}. Forma un polinomio de grado 3 que se puede escribir como

do(t)=16[t3t2t1][1331363030301410][b0b1b2b3]{\displaystyle \mathbf {C} (t)={\frac {1}{6}}\;{\begin{bmatrix}t^{3}&t^{2}&t&1\end{bmatrix}}{\begin{bmatrix}-1&3&-3&1\\3&-6&3&0\\-3&0&3&0\\1&4&1&0\end{bmatrix}}{\begin{bmatrix}\mathbf {b} _{0}\\\mathbf {b} _{1}\\\mathbf {b} _{2}\\\mathbf {b} _{3}\end{bmatrix}}}.

Esto corresponde a polinomios B-spline.

B0(t)=16(t3+3t23t+1)B1(t)=16(3t36t2+4)B2(t)=16(3t3+3t2+3t+1)B3(t)=16t3{\displaystyle {\begin{aligned}B_{0}(t)&={\frac {1}{6}}(-t^{3}+3t^{2}-3t+1)\\B_{1}(t)&={\frac {1}{6}}(3t^{3}-6t^{2}+4)\\B_{2}(t)&={\frac {1}{6}}(-3t^{3}+3t^{2}+3t+1)\\B_{3}(t)&={\frac {1}{6}}t^{3}\end{aligned}}}

y la curva puede evaluarse comodo(t)=i=03Bi(t)bi{\displaystyle \mathbf {C} (t)=\sum _{i=0}^{3}B_{i}(t)\,\mathbf {b} _{i}}Ampliando esto, podemos escribir la forma polinómica completa como se muestra a continuación.

do(t)=16((b0+3b13b2+b3)t3+(3b06b1+3b2)t2+(3b0+3b2)t+(b0+4b1+b2)){\displaystyle \mathbf {C} (t)={\frac {1}{6}}{\biggl (}(-\mathbf {b} _{0}+3\mathbf {b} _{1}-3\mathbf {b} _{2}+\mathbf {b} _{3})t^{3}+(3\mathbf {b} _{0}-6\mathbf {b} _{1}+3\mathbf {b} _{2})t^{2}+(-3\mathbf {b} _{0}+3\mathbf {b} _{2})t+(\mathbf {b} _{0}+4\mathbf {b} _{1}+\mathbf {b} _{2}){\biggr )}}.

Dado que se trata de un polinomio cúbico , también podemos escribirlo como una curva de Bézier cúbica con puntos de control. PAG0{\displaystyle {\textbf {P}}_{0}},PAG1{\displaystyle {\textbf {P}}_{1}},PAG2{\displaystyle {\textbf {P}}_{2}}, yPAG3{\displaystyle {\textbf {P}}_{3}}, de tal manera que

PAG0=16(b0+4b1+b2),PAG1=13(2b1+b2),PAG2=13(b1+2b2),PAG3=16(b1+4b2+b3).{\displaystyle {\begin{aligned}\mathbf {P} _{0}&={\frac {1}{6}}(\mathbf {b} _{0}+4\mathbf {b} _{1}+\mathbf {b} _{2}),\\\mathbf {P} _{1}&={\frac {1}{3}}(2\mathbf {b} _{1}+\mathbf {b} _{2}),\\\mathbf {P} _{2}&={\frac {1}{3}}(\mathbf {b} _{1}+2\mathbf {b} _{2}),\\\mathbf {P} _{3}&={\frac {1}{6}}(\mathbf {b} _{1}+4\mathbf {b} _{2}+\mathbf {b} _{3}).\end{aligned}}}

Una curva B-spline cúbica por partes se forma mediante un conjunto de nodos, y cada cuatro nodos consecutivos definen una parte cúbica de la curva con la formulación anterior.

Splines B sujetas

Si el primero y el últimonorte+1{\displaystyle n+1}nudos (norte{\displaystyle n}es el grado) del vector del nudo tienen el mismo valor, los puntos de inicio y fin de la curva se superponen a los puntos de control, lo que da como resultado B-splines restringidas.

Ejemplo de vectores de nodos para B-splines cúbicas fijas conMETRO{\displaystyle M}Los puntos de control son los siguientes:

Una B-spline restringida se puede dividir en segmentos de B-spline por partes con un parámetro normalizado.t[0,1]{\displaystyle t\in [0,1]}, definido por cuatro puntos de controlbi{\displaystyle {\textbf {b}}_{i}},bi+1{\displaystyle {\textbf {b}}_{i+1}},bi+2{\displaystyle {\textbf {b}}_{i+2}}, ybi+3{\displaystyle {\textbf {b}}_{i+3}}Se puede escribir como:

doi(t)=[t3t2t1]Ri[bibi+1bi+2bi+3]{\displaystyle \mathbf {C} _{i}(t)={\begin{bmatrix}t^{3}&t^{2}&t&1\end{bmatrix}}\mathbf {R} _{i}{\begin{bmatrix}\mathbf {b} _{i}\\\mathbf {b} _{i+1}\\\mathbf {b} _{i+2}\\\mathbf {b} _{i+3}\end{bmatrix}}},

dóndeRi{\displaystyle \mathbf {R} _{i}}es una matriz de coeficientes .

También podemos escribirla como una curva de Bézier cúbica con puntos de control. PAGi0{\displaystyle \mathbf {P_{i}} _{0}},PAGi1{\displaystyle \mathbf {P_{i}} _{1}},PAGi2{\displaystyle \mathbf {P_{i}} _{2}}, yPAGi3{\displaystyle \mathbf {P_{i}} _{3}}, de tal manera que

[PAGi0PAGi1PAGi2PAGi3]=Rbz1Ri[bibi+1bi+2bi+3],whmirmiRbz=[1331363033001000]{\displaystyle {\begin{bmatrix}\mathbf {P_{i}} _{0}\\\mathbf {P_{i}} _{1}\\\mathbf {P_{i}} _{2}\\\mathbf {P_{i}} _{3}\end{bmatrix}}=\mathbf {R_{bz}} ^{-1}\mathbf {R} _{i}{\begin{bmatrix}\mathbf {b} _{i}\\\mathbf {b} _{i+1}\\\mathbf {b} _{i+2}\\\mathbf {b} _{i+3}\end{bmatrix}},\qquad where\quad \mathbf {R_{bz}} ={\begin{bmatrix}-1&3&-3&1\\3&-6&3&0\\-3&3&0&0\\1&0&0&0\end{bmatrix}}}.

Vectores de nodos, matriz de coeficientesRi{\displaystyle \mathbf {R} _{i}}y matriz de transformaciónRbz1Ri{\displaystyle \mathbf {R_{bz}} ^{-1}\mathbf {R} _{i}}para cada segmento B-spline son los siguientes: [ 22 ] [ 23 ]

NURBS

Curva NURBS : curva polinómica definida en coordenadas homogéneas (azul) y su proyección sobre un plano : curva racional (rojo).

En el diseño asistido por ordenador , la fabricación asistida por ordenador y los gráficos por ordenador , una potente extensión de las B-splines son las NURBS (Nuniform Rational B-splines). Las NURBS son esencialmente B-splines en coordenadas homogéneas . Al igual que las B-splines, se definen por su orden, un vector de nodos y un conjunto de puntos de control, pero a diferencia de las B-splines simples, cada punto de control tiene un peso. Cuando el peso es igual a 1, una NURBS es simplemente una B-spline y, como tal, generaliza tanto las B-splines como las curvas y superficies de Bézier , siendo la principal diferencia la ponderación de los puntos de control, que hace que las curvas NURBS sean "racionales".

Al evaluar una curva NURBS con diferentes valores de los parámetros, se puede trazar su trayectoria en el espacio; asimismo, al evaluar una superficie NURBS con diferentes valores de los dos parámetros, se puede representar la superficie en el espacio cartesiano.

Al igual que las B-splines, los puntos de control NURBS determinan la forma de la curva. Cada punto de la curva se calcula mediante la suma ponderada de varios puntos de control. El peso de cada punto varía según el parámetro que la rige. Para una curva de grado d , la influencia de cualquier punto de control solo es distinta de cero en d + 1 intervalos (intervalos de nodos) del espacio de parámetros . Dentro de esos intervalos, el peso cambia según una función polinómica (funciones base) de grado d . En los límites de los intervalos, las funciones base tienden suavemente a cero, y la suavidad viene determinada por el grado del polinomio.

El vector de nodos es una secuencia de valores de parámetros que determina dónde y cómo los puntos de control afectan la curva NURBS. El número de nodos siempre es igual al número de puntos de control más el grado de la curva más uno. Cada vez que el valor del parámetro entra en un nuevo intervalo de nodos, se activa un nuevo punto de control, mientras que el anterior se descarta.

Una curva NURBS tiene la siguiente forma: [ 24 ]

do()=i=1knortei,norte()wiPAGii=1knortei,norte()wi{\displaystyle C(u)={\frac {\sum _{i=1}^{k}N_{i,n}(u)w_{i}P_{i}}{\sum _{i=1}^{k}N_{i,n}(u)w_{i}}}}

Aquí la notación es la siguiente: u es la variable independiente (en lugar de x ), k es el número de puntos de control, N es una B-spline (en lugar de B ), n es el grado del polinomio, P es un punto de control y w es un peso. El denominador es un factor de normalización que se evalúa como uno si todos los pesos son uno.

Es costumbre escribir esto como

do()=i=1kRi,norte()PAGi{\displaystyle C(u)=\sum _{i=1}^{k}R_{i,n}(u)P_{i}}

en el que las funciones

Ri,norte()=nortei,norte()wij=1knortej,norte()wj{\displaystyle R_{i,n}(u)={\frac {N_{i,n}(u)w_{i}}{\sum _{j=1}^{k}N_{j,n}(u)w_{j}}}}

se conocen como funciones base racionales.

Una superficie NURBS se obtiene como el producto tensorial de dos curvas NURBS, utilizando así dos parámetros independientes u y v (con índices i y j respectivamente): [ 25 ]

S(,v)=i=1kj=1Ri,j(,v)PAGi,j{\displaystyle S(u,v)=\sum _{i=1}^{k}\sum _{j=1}^{\ell }R_{i,j}(u,v)P_{i,j}}

con

Ri,j(,v)=nortei,norte()nortej,metro(v)wi,jpag=1kq=1nortepag,norte()norteq,metro(v)wpag,q{\displaystyle R_{i,j}(u,v)={\frac {N_{i,n}(u)N_{j,m}(v)w_{i,j}}{\sum _{p=1}^{k}\sum _{q=1}^{\ell }N_{p,n}(u)N_{q,m}(v)w_{p,q}}}}

como funciones base racionales.

Véase también

Notas

  1. En rigor, las B-splines se definen generalmente como continuas por la izquierda.
  2. De Boor proporciona rutinas FORTRAN para el ajuste por mínimos cuadrados de datos experimentales.
  3. El vector de nudo es equivalente a[32101234]{\displaystyle {\begin{bmatrix}-3&-2&-1&0&1&2&3&4\end{bmatrix}}}, porque los elementos en ambos extremos del vector de nudos no se utilizan en el cálculo de las funciones base. Pueden ser valores arbitrarios.

Referencias

  1. Hartmut Prautzsch; Wolfgang Böhm; Marco Paluszny (2002). Técnicas Bézier y B-Spline . Matemáticas y Visualización. Berlín, Heidelberg: Springer Science & Business Media. pag.  63.doi : 10.1007 /978-3-662-04919-8 . ISBN 978-3-540-43761-1OCLC 851370272 
  2. Farin, GE (2002). Curvas y superficies para CAGD: una guía práctica . Morgan Kaufmann. pág. 119.
  3. de Boor, pág. 114.
  4. Gary D. Knott (2000), Interpolación de splines cúbicos . Springer. pág. 151.
  5. Talebitooti, ​​R.; Shojaeefard, MH; Yarmohammadisatri, Sadegh (2015). "Optimización del diseño de forma de un tanque cilíndrico mediante curvas b-spline". Computer & Fluids . 109 : 100–112 . doi : 10.1016/j.compfluid.2014.12.004 .
  6. de Boor, pág. 113.
  7. de Boor, pág. 131.
  8. de Boor, pág. 134.
  9. Lee, ETY (diciembre de 1982). "Una rutina simplificada para el cálculo de B-splines". Computing . 29 (4): 365– 371. doi : 10.1007/BF02246763 . S2CID 2407104 . 
  10. Lee, ETY (1986). "Comentarios sobre algunos algoritmos de B-spline". Computing . 36 (3): 229– 238. doi : 10.1007/BF02240069 . S2CID 7003455 . 
  11. de Boor, pág. 322.
  12. Eilers, PHC y Marx, BD (1996). Suavizado flexible con B-splines y penalizaciones (con comentarios y réplica). Statistical Science 11(2): 89–121.
  13. Eilers, Paul HC; Marx, Brian D. (2003). "Calibración multivariante con interacción de temperatura mediante regresión de señal penalizada bidimensional". Chemometrics and Intelligent Laboratory Systems . 66 (2): 159– 174. doi : 10.1016/S0169-7439(03)00029-7 .
  14. de Boor, pág. 115.
  15. Carlson, BC (1991). "B-splines, funciones hipergeométricas y promedios de Dirichlet" . Journal of Approximation Theory . 67 (3): 311– 325. doi : 10.1016/0021-9045(91)90006-V .
  16. Glüsenkamp, ​​T. (2018). "Tratamiento probabilístico de la incertidumbre derivada del tamaño finito de los datos ponderados de Monte Carlo". EPJ Plus . 133 (6): 218. arXiv : 1712.01293 . Bibcode : 2018EPJP..133..218G . doi : 10.1140/epjp/i2018-12042-x . S2CID 125665629 . )
  17. Eugene V. Shikin; Alexander I. Plis (14 de julio de 1995). Manual sobre splines para el usuario . CRC Press. págs. 96–. ISBN  978-0-8493-9404-1.
  18. Wernecke, Josie (1993). "8" . The Inventor Mentor: Programming Object-Oriented 3D Graphics with Open Inventor, Release 2 (1.ª ed.). Boston, MA, EE. UU.: Addison-Wesley Longman Publishing Co., Inc. ISBN  978-0201624953.
  19. ^ de Boor, Capítulo XIV, p. 235.
  20. Gans, Peter; Gill, J. Bernard (1984). "Suavizado y diferenciación de curvas espectroscópicas mediante funciones spline". Applied Spectroscopy . 38 (3): 370– 376. Bibcode : 1984ApSpe..38..370G . doi : 10.1366/0003702844555511 . S2CID 96229316 . 
  21. Vicsek, Maria; Neal, Sharon L.; Warner, Isiah M. (1986). "Filtrado en el dominio del tiempo de datos de fluorescencia bidimensionales" . Applied Spectroscopy . 40 (4): 542– 548. Bibcode : 1986ApSpe..40..542V . doi : 10.1366/0003702864508773 . S2CID 28705788. Archivado del original el 23 de junio de 2017. 
  22. Cohen, Elaine; Riesenfeld, Richard F. (1982). "Representaciones matriciales generales para curvas de Bezier y B-spline". Computers in Industry . 3 : 13–15 .
  23. "Introducción a las curvas B-Spline para ingenieros de implementación" . Qiita .
  24. Piegl y Tiller, capítulo 4, sección 2
  25. Piegl y Tiller, capítulo 4, sección 4

Obras citadas

  • Carl de Bor (1978). Una guía práctica de splines . Springer-Verlag. ISBN 978-3-540-90356-7.
  • Piegl, Les; Tiller, Wayne (1997). El libro de NURBS (2.ª  ed.). Springer. ISBN 978-3-540-61545-3.

Lecturas adicionales

  • Richard H. Bartels; John C. Beatty; Brian A. Barsky (1987). Introducción a las splines para su uso en gráficos por computadora y modelado geométrico . Morgan Kaufmann. ISBN 978-1-55860-400-1.
  • Jean Gallier (1999). Curvas y superficies en el modelado geométrico: teoría y algoritmos . Morgan Kaufmann. Capítulo 6. Curvas B-spline.Este libro está agotado y se puede conseguir gratuitamente a través del autor.
  • Hartmut Prautzsch; Wolfgang Böhm; Marco Paluszny (2002). Técnicas Bézier y B-Spline . Medios de ciencia y negocios de Springer. ISBN 978-3-540-43761-1.
  • David Salomon (2006). Curvas y superficies para gráficos por computadora . Springer. Capítulo 7. Aproximación mediante B-splines. ISBN 978-0-387-28452-1.
  • Hovey, Chad (2022). Formulación e implementación en Python de la geometría de Bézier y B-Spline. SAND2022-7702C . (153 páginas)
  • Weisstein, Eric W. "B-Spline" . MathWorld .
  • Ruf, Johannes. "B-splines de tercer orden en una cuadrícula no uniforme" (PDF) . Archivado del original (PDF) el 6 de noviembre de 2013. Consultado el 2 de mayo de 2012 .
  • B-spline bivariada de numpy
  • Curvas B interactivas con JSXGraph
  • TinySpline: Biblioteca C de código abierto con enlaces para varios lenguajes.
  • Curvas B-spline uniformes no racionales: modelado de curvas en el espacio 2D. Autor: Stefan G. Beck
  • Editor B-Spline de Shukant Pal