B-spline

Ajustar Compartir Imprimir Citar
Función de Spline
Curva de espinilla dibujada como una suma ponderada de líneas B con puntos de control/pológono de control, y curvas de componentes marcadas

En el subcampo matemático del análisis numérico, una B-spline o base spline es una función spline que tiene un apoyo mínimo con respecto a un grado, suavidad y partición de dominio. Cualquier función spline de un grado dado se puede expresar como una combinación lineal de B-splines de ese grado. Los B-splines cardinales tienen nudos que son equidistantes entre sí. Los B-splines se pueden utilizar para el ajuste de curvas y la diferenciación numérica de datos experimentales.

En el diseño asistido por computadora y los gráficos por computadora, las funciones spline se construyen como combinaciones lineales de B-splines con un conjunto de puntos de control.

Introducción

El término "B-spline" fue acuñado por Isaac Jacob Schoenberg y es corto para la línea de base. Una función de estilización del orden n{displaystyle n} es una función polinómica de grado en sentido parcial n− − 1{displaystyle n-1} en una variable x{displaystyle x}. Los lugares donde las piezas se encuentran son conocidos como nudos. La característica clave de las funciones de estilización es que ellos y sus derivados pueden ser continuos, dependiendo de las multiplicidades de los nudos.

B-splines of order n{displaystyle n} son funciones de base para las funciones del mismo orden definidas a lo largo de los mismos nudos, lo que significa que todas las funciones de estilización posibles pueden ser construidas a partir de una combinación lineal de líneas B, y sólo hay una combinación única para cada función de estilización.

Definición

Cardenal quadratic B-spline con vector de nudo (0, 0, 1, 2, 3, 3, 3) y puntos de control (0, 0, 1, 0, 0), y su primer derivado
Cardenal B-spline con vector de nudo (−2, −2, −2, −1, 0, 1, 2, 2, 2) y puntos de control (0, 0, 6, 0, 0, 0, 0, 0, 0) y su primer derivativo
Cardenal quartic B-spline con vector de nudo (0, 0, 0, 0, 1, 2, 3, 4, 5, 5, 5, 5, 5) y puntos de control (0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0) y sus derivados primero y segundo

Una línea de orden n{displaystyle n} es una función polinómica de grado en sentido parcial n− − 1{displaystyle n-1} en una variable x{displaystyle x}. Los valores de x{displaystyle x} donde las piezas de polinomio se encuentran se conocen como nudos, denotados t0,t1,t2,...... ,tn{displaystyle ¿Qué? y se clasifica en orden decreciente. Cuando los nudos son distintos, el primero n− − 2{displaystyle n-2} Los derivados de las piezas polinómicas son continuos a través de cada nudo. Cuando r{displaystyle r} los nudos son coincidentes, entonces sólo el primero n− − r− − 1{displaystyle n-r-1} Los derivados de la esponja son continuos a través de ese nudo.

Para una secuencia dada de nudos, hay, hasta un factor de escalado, un esguince único Bi,n()x){displaystyle B_{i,n}(x)} satisfacción

<math alttext="{displaystyle B_{i,n}(x)={begin{cases}0&{text{if }}xBi,n()x)={}0six.tiox≥ ≥ ti+n,non-zerode otra manera.{displaystyle B_{i,n}(x)={begin{cases}0 {text{if} }x âTMa âTMa âTMa or }xgeq t_{i+n},\{text{non-zero}} {text{otherwise}}end{cases}}} {fnMicrosoft Sans Serif}<img alt="{displaystyle B_{i,n}(x)={begin{cases}0&{text{if }}x

Si agregamos la limitación adicional que .. iBi,n()x)=1{displaystyle sum _{i}B_{i,n}(x)=1} para todos x{displaystyle x} entre el primer y último nudo, luego el factor de escalado Bi,n()x){displaystyle B_{i,n}(x)} se arregla. El resultado Bi,n()x){displaystyle B_{i,n}(x)} Las funciones de estilización se llaman B-splines.

Alternativamente, las líneas B se pueden definir mediante la construcción mediante la fórmula de recursión Cox-de Boor. Dada una secuencia de nudos ...... ,t0,t1,t2,...... {displaystyle ldotst_{0},t_{1},t_{2},ldots }, las líneas B del orden 1 se definen por

<math alttext="{displaystyle B_{i,1}(x):={begin{cases}1&{text{if }}t_{i}leq xBi,1()x):={}1siti≤ ≤ x.ti+1,0de otra manera.{displaystyle B_{i,1}(x):={begin{cases}1 {text{if} }t_{i}leq ###<img alt="{displaystyle B_{i,1}(x):={begin{cases}1&{text{if }}t_{i}leq x

Estos satisfacen .. iBi,1()x)=1{displaystyle sum _{i}B_{i,1}(x)=1} para todos x{displaystyle x} porque para cualquier x{displaystyle x} exactamente uno de los Bi,1()x)=1{displaystyle B_{i,1}(x)=1}, y todos los demás son cero.

Las B-splines de orden superior se definen por recursividad

Bi,k+1()x):=⋅ ⋅ i,k()x)Bi,k()x)+[1− − ⋅ ⋅ i+1,k()x)]Bi+1,k()x),{displaystyle B_{i,k+1}(x):=omega _{i,k}(x)B_{i,k}(x)+[1-omega _{i+1,k}(x)]B_{i+1,k}(x),}

dónde

⋅ ⋅ i,k()x):={}x− − titi+k− − ti,ti+kل ل ti,0de otra manera.{displaystyle omega _{i,k}(x):={begin{cases}{dfrac {x-t_{i} {t_{i+k}-t_{i}}} {i+k}neq ################################################################################################################################################################################################################################################################

Propiedades

Una función B-spline es una combinación de bandas flexibles controlada por una serie de puntos denominados puntos de control, que crean curvas suaves. Estas funciones se utilizan para crear y gestionar formas y superficies complejas utilizando una serie de puntos. La función B-spline y las funciones de Bézier se aplican ampliamente en los métodos de optimización de formas.

A B-spline of order n{displaystyle n} es una función polinómica de grado en sentido parcial n− − 1{displaystyle n-1} en una variable x{displaystyle x}. Se define sobre 1+n{displaystyle 1+n} emplazamientos tj{displaystyle t_{j}, llamados nudos o puntos de rotura, que deben estar en orden no descendente tj≤ ≤ tj+1{displaystyle t_{j}leq t_{j+1}. El B-spline sólo contribuye en el rango entre el primero y el último de estos nudos y es cero en otro lugar. Si cada nudo se separa por la misma distancia h{displaystyle h} (donde) h=tj+1− − tj{displaystyle h=t_{j+1}-t_{j}) de su predecesor, el vector nudo y las líneas B correspondientes se llaman "uniform" (ver cardenal B-spline abajo).

Para cada intervalo de nudo finito donde no es cero, un B-spline es un polinomio de grado n− − 1{displaystyle n-1}. Un B-spline es una función continua en los nudos. Cuando todos los nudos pertenecientes a la B-spline son distintos, sus derivados también son continuos hasta el derivado del grado n− − 2{displaystyle n-2}. Si los nudos son coincidentes a un valor dado de x{displaystyle x}, la continuidad del orden derivado se reduce en 1 para cada nudo coincidente adicional. Las líneas B pueden compartir un subconjunto de sus nudos, pero dos líneas B definidas sobre exactamente los mismos nudos son idénticas. En otras palabras, un B-spline se define únicamente por sus nudos.

Uno distingue los nudos internos y los puntos finales. Los nudos internos cubren el x{displaystyle x}- El dominio uno está interesado. Desde que un solo B-spline ya se extiende 1+n{displaystyle 1+n} nudos, sigue que los nudos internos necesitan ser extendidos con n− − 1{displaystyle n-1} endpoints en cada lado, para dar soporte completo a la primera y última B-spline, que afectan los intervalos de nudos internos. Los valores de los puntos finales no importan, generalmente el primer o último nudo interno se repite.

La utilidad de B-splines reside en el hecho de que cualquier función del orden de la línea n{displaystyle n} en un conjunto dado de nudos se puede expresar como una combinación lineal de B-splines:

Sn,t()x)=.. iα α iBi,n()x).{displaystyle S_{n,mathbf {t}(x)=sum _{i}alpha _{i}B_{i,n}(x). }

B-splines juegan el papel de funciones base para el espacio de funciones spline, de ahí el nombre. Esta propiedad se deriva del hecho de que todas las piezas tienen las mismas propiedades de continuidad, dentro de su rango individual de apoyo, en los nudos.

Las expresiones para los polinomios se pueden derivar mediante la fórmula recursiva de Cox-de Boor

<math alttext="{displaystyle B_{i,0}(x):={begin{cases}1&{text{if }}t_{i}leq xBi,0()x):={}1siti≤ ≤ x.ti+1,0de otra manera.{displaystyle B_{i,0}(x):={begin{cases}1⁄4text{if }t_{i}leq ###<img alt="{displaystyle B_{i,0}(x):={begin{cases}1&{text{if }}t_{i}leq x
Bi,k()x):=x− − titi+k− − tiBi,k− − 1()x)+ti+k+1− − xti+k+1− − ti+1Bi+1,k− − 1()x).{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_+k+1}-t_{i+1}}B_{i+1,k-1}(x).}

Eso es, Bj,0()x){displaystyle B_{j,0}(x)} es una constante parcial o cero indicando qué lazo nudo x está en (cero si el nudo j se repite). La ecuación de recursión está en dos partes:

x− − titi+k− − ti{fnMicroc} {x-t_{i} {t_{i+k}

rampas de cero a uno como x va de ti{displaystyle T_{i} a ti+k{displaystyle T_{i+k}, y

ti+k+1− − xti+k+1− − ti+1{fnMicroc} {t_{i+k+1}-x} {t_{i+k+1}-t_{i+1}}}

rampas de uno a cero como x va de ti+1{displaystyle t_{i+1} a ti+k+1{displaystyle t_{i+k+1}. El correspondiente Bs son cero fuera de esos respectivos rangos. Por ejemplo, Bi,1()x){displaystyle B_{i,1}(x)} es una función triangular que es cero debajo x=ti{displaystyle x=t_{i}}, rampas a una en x=ti+1{displaystyle x=t_{i+1}} y volver a cero en y más allá x=ti+2{displaystyle x=t_{i+2}}. Sin embargo, debido a que las funciones de base B-spline tienen soporte local, B-splines son típicamente computados por algoritmos que no necesitan evaluar las funciones de 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. 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.

000Bi− − 2,2Bi− − 1,1Bi,0Bi− − 1,2Bi,10Bi,200{fnMicrosoft} {}cH0}cH0}}\cH0}\cH0}}\cH0}cH0}cH0}cH0}cH0}cH0}cH0}cH0}cH0}cH0cH0cH0}cH0}cH00}cH0}cH0}cH0}cH0}cH0}cH0}cH0}cH0}cH0}cH0}cH0}cH0}cH0}cH0}cH0}cH0}cH0}cH0}cH0}cH0}cH0}cH0}cH0}cH0}cH0}cH0}cH0}cH0}cH0}

Aplicación de la fórmula de recursión con los nudos en ()0,1,2,3){displaystyle (0,1,2,3)} da las piezas del uniforme B-spline de orden 3

<math alttext="{displaystyle {begin{aligned}B_{1}&=x^{2}/2,&0&leq x<1,\B_{2}&=(-2x^{2}+6x-3)/2,&1&leq x<2,\B_{3}&=(3-x)^{2}/2,&2&leq xB1=x2/2,0≤ ≤ x.1,B2=()− − 2x2+6x− − 3)/2,1≤ ≤ x.2,B3=()3− − x)2/2,2≤ ≤ x.3.{displaystyle {begin{aligned}B_{1} limit=x^{2}/2, limitada0leq xse1,B_{2} limit=(-2x^{2}+6x-3)/2, limitada1 ventajaleq x 10,2B_{3} sensible=(3-x)} {2}{2} {2}{2} {leqd} {d}d}d}d}d}d}d}}}}c.<img alt="{displaystyle {begin{aligned}B_{1}&=x^{2}/2,&0&leq x<1,\B_{2}&=(-2x^{2}+6x-3)/2,&1&leq x<2,\B_{3}&=(3-x)^{2}/2,&2&leq x

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

Atx=1:: B1=B2=0.5,dB1dx=dB2dx=1.Atx=2:: B2=B3=0.5,dB2dx=dB3dx=− − 1.{displaystyle {begin{aligned} A }x=1colon B_{1}=B_{2}=0.5, {frac {dB_{1} {dx}={frac} {dB_{2}{dx}=1.[6pt] A }x=2colon B_{2}=B_{3}=0.5, {frac {dB_{2}{dx}={frac} {dB_{3} {dx}=-1.end{aligned}}

La segunda derivada de un B-spline de grado 2 es discontinua en los nudos:

d2B1dx2=1,d2B2dx2=− − 2,d2B3dx2=− − 1.{fnMicrosoft Sans Serif} {fnMicrosoft Sans Serif} {fnMicroc {fnMicroc {2} {2}}} {2}}}}=-2, {fnMicroc {2}B_{3}}}}}}=-1.

Se han propuesto variantes más rápidas del algoritmo de De Boor, pero tienen una estabilidad comparativamente menor.

B-spline cardinal

Un B-spline cardinal tiene una separación constante h entre nudos. Los B-splines cardinales para un orden dado n son solo copias desplazadas entre sí. Se pueden obtener de la definición más simple.

Bi,n,t()x)=x− − tihn[0,...... ,n]()⋅ ⋅ − − ti)+n− − 1.{displaystyle B_{i,n,t}(x)={frac [0,dotsn] -...

La notación "portista" se utiliza para indicar que n- la diferencia dividida de la función ()t− − x)+n− − 1{displaystyle (t-x)_{+}{n-1} de las dos variables t y x se debe tomar por fijación x y examen ()t− − x)+n− − 1{displaystyle (t-x)_{+}{n-1} como función de t solo.

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

Ejemplo, si queremos interponer tres valores entre los nodos B-spline (b{displaystyle {textbf {b}}), podemos escribir la señal como

x=[b1,0,0,b2,0,0,b3,0,0,...... ,bn,0,0].{displaystyle mathbf {x} =[mathbf {b} _{1},0,0,mathbf {b} _{2},0,0,mathbf {b},0,0,dotsmathbf {b} _{n},0,0].}

Convolución de la señal x{displaystyle mathbf {x} con una función rectángulo h=[1/3,1/3,1/3]{displaystyle mathbf {h} =[1/3,1/3,1/3]} da valores interpolados de primera orden B-spline. Interpolación de segunda orden B-spline es la convolución con una función de rectángulo dos veces Sí.=xAlternativa Alternativa hAlternativa Alternativa h{displaystyle mathbf {y} =mathbf {x} *Mathbf {h} *Mathbf {h}; por filtrado iterativo con función rectángulo, se obtiene interpolación de mayor orden.

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

Consulte la distribución de Irwin–Hall#Casos especiales de expresiones algebraicas para los 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 están determinados en parte por los datos que se van a ajustar y en parte por una función de penalización adicional que tiene como objetivo imponer suavidad para evitar el sobreajuste.

Las aproximaciones de datos P-spline bidimensionales y multidimensionales pueden usar el producto de división de caras de matrices para minimizar las operaciones de cálculo.

Expresiones derivadas

La derivada de un B-spline de grado k es simplemente una función de B-splines de grado k − 1:

dBi,k()x)dx=k()Bi,k− − 1()x)ti+k− − ti− − Bi+1,k− − 1()x)ti+k+1− − ti+1).{displaystyle {frac {dB_{i,k}(x}{dx}=kleft({frac {B_{i,k-1}(x)}{t_{i+k}-t_{i}}-{frac} {frac} {B_{i+1,k-1}(x)}{t_{i+k+1}-t_{i+1}}right).}

Esto implica que

ddx.. iα α iBi,k=.. i=r− − k+2s− − 1kα α i− − α α i− − 1ti+k− − tiBi,k− − 1on[tr,ts],{displaystyle {frac {dx}sum} ¿Qué? ¿Qué? ¿Por qué? Alpha. - ¿Qué? [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 univariados

Univariate B-splines, i.e. B-splines donde las posiciones del nudo se encuentran en una sola dimensión, se puede utilizar para representar funciones de densidad de probabilidad 1-d p()x){displaystyle p(x)}. Un ejemplo es una suma ponderada i{displaystyle i} B-spline basis functions of order n{displaystyle n}, que cada uno está normalizado en la unidad (es decir, no se evalúa directamente utilizando el algoritmo estándar de de-Boor)

p()x)=.. ici⋅ ⋅ Bi,n,norma()x){displaystyle p(x)=sum ¿Qué? B_{i,n,{textbf {norm}(x)}

y con restricción constante de normalización .. ici=1{displaystyle sum _{i}c_{i}=1}. El k- el momento crudo μ μ k{displaystyle mu _{k} de una línea B normalizada Bi,n,norma{displaystyle B_{i,n,{textbf {norm}} puede ser escrito como el promedio de Dirichlet de Carlson Rk{displaystyle R_{k}, que a su vez se puede resolver exactamente a través de un contorno integral y una suma iterativa como

μ μ k=Rk()m;t)=∫ ∫ − − JUEGO JUEGO JUEGO JUEGO xk⋅ ⋅ Bi,n,norma()x▪ ▪ t1...... tj)dx=.. ()k+1).. ()m).. ()m+k)⋅ ⋅ Dk()m,t){displaystyle mu _{k}=R_{k}(mathbf {m};mathbf {t}=int _{-infty }{infty }x^{k}cdot B_{i,n,{textbf {norm}}(xmid 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.. u=1k[().. i=1jmi⋅ ⋅ tiu)Dk− − u]{displaystyle D_{k}={frac {1}{k}sum limits _{u=1}k}left[left(sum limits) ¿Por qué?

y D0=1{displaystyle D_{0}=1}. Aquí, t{displaystyle mathbf {t} representa un vector con el j{displaystyle j} posiciones de nudo y m{displaystyle mathbf {m} un vector con los respectivos nudos multiplicidades. Por lo tanto, se puede calcular cualquier momento de una función de densidad de probabilidad p()x){displaystyle p(x)} representado por una suma de funciones de base B-spline exactamente, sin recurrir a técnicas numéricas.

Relación con Bézier por partes/compuesto

Una curva Bézier también es una curva polinomio definible utilizando una recursión de curvas de grado inferior 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 Bézier tienen el mismo dominio de definición (normalmente [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 grado Bézier n{displaystyle n} dado por m≫ ≫ n{displaystyle mgg n} puntos de control consta de alrededor m/n{displaystyle m/n} mayormente segmentos independientes, mientras que la línea B con los mismos parámetros transiciones sin problemas de subintervalo a subinterval. Para obtener algo comparable de una curva de Bézier, se necesitaría imponer una condición de suavidad en las transiciones entre segmentos, dando lugar a algún tipo de estilización de Bézier (para el cual muchos puntos de control serían determinados por el requisito de suavidad).

Una curva de Bézier por partes/compuesta es una serie de curvas de Bézier unidas con al menos una continuidad C0 (el último punto de una curva coincide con el punto inicial de la siguiente curva). Dependiendo de la aplicación, se pueden agregar requisitos adicionales de suavidad (como continuidad C1 o C2). Las curvas continuas C1 tienen tangentes idénticas en el punto de corte (donde se encuentran las dos curvas). Las curvas continuas C2 tienen una curvatura idéntica en el punto de ruptura.

Ajuste de curvas

Por lo general, en el ajuste de curvas, un conjunto de puntos de datos se ajusta con 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 existe una base teórica para elegir una función de ajuste, la curva puede ajustarse con una función spline compuesta por una suma de B-splines, utilizando el método de mínimos cuadrados. Por lo tanto, la función objetivo para la minimización por mínimos cuadrados es, para una función spline de grado k,

U=.. Todosx{}W()x)[Sí.()x)− − .. iα α iBi,k,t()x)]}2,{displaystyle U=sum _{text{all}~x}left{W(x)left[y(x)-sum _{i}alpha ¿Por qué?

Donde W()x) es un peso, y Sí.()x) es el valor datum a x. Los coeficientes α α i{displaystyle alpha _{i} son los parámetros a determinar. Los valores del nudo pueden fijarse o tratarse como parámetros.

La principal dificultad para aplicar este proceso es determinar la cantidad de nudos a usar y dónde deben colocarse. de Boor sugiere varias estrategias para abordar este problema. Por ejemplo, el espacio entre nudos se reduce en proporción a la curvatura (segunda derivada) de los datos. Se han publicado algunas aplicaciones. Por ejemplo, se ha investigado el uso de B-splines para ajustar curvas simples de Lorentzian y Gaussian. Se calcularon funciones spline óptimas de grados 3 a 7 inclusive, basadas en arreglos simétricos de 5, 6 y 7 nudos, y se aplicó el método para suavizar y diferenciar las curvas espectroscópicas. En un estudio comparable, la versión bidimensional del filtrado Savitzky-Golay y el método spline produjeron mejores resultados que el promedio móvil o el filtrado Chebyshev.

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

En aplicaciones de diseño y gráficos computadorizados, a veces se representa una curva de spline como C()t){displaystyle C(t)}, una curva paramétrica de algún parámetro real t{displaystyle t}. En este caso la curva C()t){displaystyle C(t)} puede tratarse como dos o tres funciones de coordinación separadas ()x()t),Sí.()t)){displaystyle (x(t),y(t)}, o ()x()t),Sí.()t),z()t)){displaystyle (x(t),y(t),z(t)}. Funciones de coordinación x()t){displaystyle x(t)}, Sí.()t){displaystyle y(t)} y z()t){displaystyle z(t)} son cada una de las funciones de estilización, con un conjunto común de valores nudos t1,t2,...... ,tn{displaystyle ¿Qué?.

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

X()t)=.. ixiBi,n()t),Y()t)=.. iSí.iBi,n()t),Z()t)=.. iziBi,n()t).{displaystyle {begin{aligned}X(t) sensible=sum _{i}x_{i}B_{i,n}(t),Y(t) limit=sum - Sí. ################################################################################################################################################################################################################################################################

Los pesos xi{displaystyle x_{i}}, Sí.i{displaystyle Y... y zi{displaystyle z_{i} se pueden combinar para formar puntos Pi=()xi,Sí.i,zi){displaystyle P_{i}=(x_{i},y_{i},z_{i}) } en 3-d espacio. Estos puntos Pi{displaystyle P_{i} son comúnmente conocidos como puntos de control.

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

  1. Los puntos de control Pi{displaystyle P_{i} definir una curva. Si todos los puntos de control se transforman juntos de alguna manera, como ser traducidos, rotados, escalados o movidos por cualquier transformación affine, entonces la curva correspondiente se transforma de la misma manera.
  2. Debido a que las líneas B no son cero para un número finito de intervalos de nudo, si se mueve un solo punto de control, el cambio correspondiente a la curva paramétrica está justo sobre el rango de parámetro de un pequeño número de intervalos nudos.
  3. Porque... .. iBi,n()x)=1{displaystyle sum _{i}B_{i,n}(x)=1}, y en todo momento cada Bi,n()x)≥ ≥ 0{displaystyle B_{i,n}(x)geq 0}, entonces la curva permanece dentro de la caja atada de los puntos de control. También, en algún sentido, la curva sigue ampliamente 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.

NURBOS

curva NURBS – curva polinomio definida en coordenadas homogéneas (azul) y su proyección en plano – curva racional (rojo)

En el diseño asistido por computadora, la fabricación asistida por computadora y los gráficos por computadora, una poderosa extensión de B-splines son las B-splines racionales no uniformes (NURBS). NURBS son esencialmente B-splines en coordenadas homogéneas. Al igual que los B-splines, se definen por su orden, un vector de nudo y un conjunto de puntos de control, pero a diferencia de los B-splines simples, cada uno de los puntos de control tiene un peso. Cuando el peso es igual a 1, una NURBS es simplemente una B-spline y, como tal, NURBS 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, lo que hace que las curvas NURBS sean "racionales& #34;.

Surface modelling.svg

Al evaluar un NURBS en varios valores de los parámetros, la curva se puede rastrear a través del espacio; del mismo modo, al evaluar una superficie NURBS en varios valores de los dos parámetros, la superficie se puede representar en el espacio cartesiano.

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

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

Una curva NURBS toma la siguiente forma:

C()u)=.. i=1kNi,n()u)wiPi.. i=1kNi,n()u)wi{displaystyle C(u)={frac {sum ¿Qué? ¿Qué?

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 un B-spline (usado 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

C()u)=.. i=1kRi,n()u)Pi{displaystyle C(u)=sum ¿Qué?

en el que las funciones

Ri,n()u)=Ni,n()u)wi.. j=1kNj,n()u)wj{displaystyle R_{i,n}(u)={frac {N_{i,n}(u)w_{i}{sum ¿Qué?

son conocidas como funciones de base racional.

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):

S()u,v)=.. i=1k.. j=1l l Ri,j()u,v)Pi,j{displaystyle S(u,v)=sum ¿Por qué?

con

Ri,j()u,v)=Ni,n()u)Nj,m()v)wi,j.. p=1k.. q=1l l Np,n()u)Nq,m()v)wp,q{displaystyle R_{i,j}(u,v)={frac {N_{i,n}(u)N_{j,m}(v)w_{i,j}{sum - ¿Qué? ¿Qué?

como funciones de base racional.