UNIVERSIDAD NACIONAL TECNOLOGICA DEL CONO SUR DE LIMA “AÑO DE LA UNION NACIONAL FRENTE “AÑO DE LA UNION NACIONAL FRENTE A LA CRISIS EXTERNA” A LA CRISIS EXTERNA” CURSO : CALCULO NUMERICO TEMA : INTERPOLACION B-SPLINE 2D PROFESOR (A) : ROCA G. LUIS ALUMNOS : CUYA E. Liliana. FLORES L. Joseph. TORRES S. Katherine. CICLO : V
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
UNIVERSIDAD NACIONAL TECNOLOGICA DEL CONO
SUR DE LIMA
“AÑO DE LA UNION NACIONAL FRENTE “AÑO DE LA UNION NACIONAL FRENTE
A LA CRISIS EXTERNA”A LA CRISIS EXTERNA”
CURSO : CALCULO NUMERICO
TEMA : INTERPOLACION B-SPLINE 2D
PROFESOR (A) : ROCA G. LUIS
ALUMNOS : CUYA E. Liliana.FLORES L. Joseph.TORRES S. Katherine.
CICLO : V
V i l l a E l S a l v a d o r – P e r úV i l l a E l S a l v a d o r – P e r ú2 0 0 92 0 0 9
Capitulo 1: ¿B-SPLINE ES UN SPLINE?.......................................................................41.1. B-Spline no racionales y uniformes...........................................................61.2. B-Spline no racionales y no uniformes......................................................81.3. B-Spline racionales y no uniformes.........................................................11
Capitulo 2: TIPOS DE B-SPLINE …………………………………………………….13
Capitulo 3: B-SPLINE EXPRESADO ANALITICAMENTE.....................................193.1. Definición recursiva de los B-Spline......................................................193.2. Fundamento del algoritmo BFEA............................................................203.3. Algoritmo BFEA para generar la expresión analítica de los B-Spline. . .243.4. Realizacion de un B-Spline.....................................................................183.5. Algoritmos...............................................................................................28
Capitulo 4: EXPRESIONES ANALITICAS DE LAS CURVAS B-SPLINE.............304.1. Definición recursiva de las curvas de B-Spline......................................314.2. Definición de polígonos de control..........................................................314.3. El algoritmo BFEA en la obtención de las expresiones analíticas de las curvas de b-Spline..........................................................................................32
a construcción de curvas de forma libre en un ambiente industrial se remonta a la
época Romana, con la construcción marítima. Los lados de una nave producidas
con tablones de madera debían producirse con plantillas que pudieran usarse muchas
veces. Hasta esta época no existió ningún dibujo para definir el casco de una nave, estos
se hicieron populares en Inglaterra allá por el año 1600. Y probablemente en aquella
época se inventó el clásico “spline” definido como una tira flexible de madera o caucho
usada para dibujar curvas lisas.
L
Posteriormente, en los años cincuenta, dos matemáticos franceses (Paul de Faget
de Casteljau y Pierre Bézier) trabajando en forma independiente llegaron a resultados
similares descubriendo así las hoy conocidas curvas de Bézier. El descubrimiento de estas
curvas fue de tal trascendencia que su uso en el diseño se adoptó a nivel mundial.
Posteriormente se mejoran los resultados obtenidos con las curvas de Bézier al
descubrirse su generalización: las curvas de B-splines (nombre corto para Basis Splines o
Spline Básico).
Alrededor de los años sesenta, deBoor empezó a trabajar para los laboratorios de
investigación de la General Motors usando en este trabajo los B-splines para efectuar
representaciones geométricas. Más tarde se vuelve uno de los más arduos propulsores de
los B-splines en la teoría de aproximación. La evaluación recursiva de las curvas
B-splines se debe a él y en la actualidad se conoce como el algoritmo de deBoor. Esta
evaluación recursiva fue descubierta en forma independiente por deBoor, L. Mansfield y
M. Cox. Gracias a esta evaluación recursiva los B-splines se convierten en una
herramienta viable en CAGD “Computer Aided Geometric Design” (Diseño Geométrico
Asistido por Computadora), ya que antes de su descubrimiento los B-splines se definieron
usando un tedioso método de diferencias divididas que era muy inestable.
3
UNTECS
INTERPOLACION B-SPLINE 2D CALCULO NUMERICO
CAPITULO 1
¿B-SPLINE ES SPLINE?
n el campo matemático del análisis numérico, los splines son una familia de
curvas que permiten definir segmentos de curva con gran precisión y trazado
muy suave. Son de gran utilidad en aplicaciones para el diseño de superficies.ESe distinguen varios tipos de splines, el primer tipo son los splines cúbicos naturales, que
se corresponden con la representación matemática de la definición de spline. También
existe una subfamilia de splines llamada B-Splines, dentro de esta familia se distinguen
los splines no racionales y uniformes, los splines racionales y no uniformes y los splines
no racionales y no uniformes. Los otros dos tipos de splines que se tratarán son los
splines de Catmull–Rom y los Beta-Splines. Pero en esta ocasión nuestro estudio enfoca
la subfamilia de splines llamada B-Spline.
Los B-Splines son un conjunto de segmentos curvos definidos por una serie de puntos de
control. Cada segmento está afectado por 4 puntos de control que son compartidos por los
segmentos adyacentes de forma que se establece continuidad entre los mismos. Por lo
tanto, en los B-Splines disponemos de control local sobre la curva, es decir, si se mueve
un punto de control, sólo es necesario redibujar una pequeña parte de la curva.
4
UNTECS
INTERPOLACION B-SPLINE 2D CALCULO NUMERICO
Como cada curva está definida por 4 puntos de control, cada punto de control tiene
influencia sobre el segmento de curva. Moviendo un punto de control en una determinada
dirección se mueven el segmento en la misma dirección en la que se mueve el punto
quedando el resto de segmentos (resto de la curva) inafectados.
Una propiedad importante de estos splines es el llamado convex hull. El convex hull es el
recinto que se origina al unir los puntos de control de forma que el segmento de curva
permanece en su interior.
5
UNTECS
INTERPOLACION B-SPLINE 2D CALCULO NUMERICO
Si todos los puntos de control son iguales el convex hull es un cuadrilátero, en cambio, si
se repinten dos puntos de control, entonces el spline pasará muy cerca del punto repetido
y el convex hull pasa a ser un triángulo. El convex hull pasa a ser una recta y el spline
pasa sobre el punto de control repetido. Esta es una posible técnica para conseguir que el
spline interpole puntos de control, no obstante el precio a pagar es la reducción de la
continuidad y, por lo tanto, curvas con trazado más brusco. Es importante destacar que
cuanto mayor es la continuidad (se repiten menos puntos de control) menos control existe
sobre por donde va a pasar la curva.
Existen varios tipos de B-Splines atendiendo a si son o no uniformes y si son o no
racionales.
El término uniforme significa que los nodos son equidistantes, o lo que es lo mismo, la
distancia entre las t es la misma. El término racional indica que el spline emplea
coordenadas homogéneas, si no es uniforme, entonces se utilizan coordenadas
cartesianas.
1.1. B-SPLINES NO RACIONALES Y UNIFORMES
Un segmento Qi comienza cerca de Pi–2 y termina cerca de Pi–1. Cada segmento comparte
3 puntos de control con el contiguo, lo que permite continuidad paramétrica.
6
UNTECS
INTERPOLACION B-SPLINE 2D CALCULO NUMERICO
Como cada segmento de curva está definido por cuatro puntos de control, al mover un
punto de control en una dirección, se mueven los 4 segmentos de curva adyacentes en esa
misma dirección. Esto no se cumple en los extremos de la curva cuando el spline no es
cerrado. Esta propiedad recibe el nombre de control local y es común en todos los B-
Splines.
Para el caso de los B-Splines no racionales y uniformes, existe una ecuación para cada
uno de los segmentos:
1iiBSiBSii ttt,G·M·T)t(Q
donde:
1ttttttT i2
i3
ii
i
1i
2i
3i
BSi
P
P
P
P
G
0141
0303
0363
1331
61
M BS
Para dibujar toda la curva se aplica la ecuación anterior para todos los puntos de control,
es decir, para 3 <= i <= n.
Las funciones de mezcla (blending functions) de este tipo de B-Splines son todas
positivas y suman 1. Estas funciones de mezcla se representan por la ecuación BBS que se
obtiene al realizar el producto Ti · MBS. Como las funciones de mezcla son iguales para
7
UNTECS
INTERPOLACION B-SPLINE 2D CALCULO NUMERICO
todos los segmentos de la curva, si reemplazamos t – ti por t y el intervalo [ti, ti+1] por [0,
1] tenemos lo siguiente:
1t0,t1t3t3t34t6t3t161
t1t3t3t34t6t31t3t3t61
BBBBM·TB
323233
3232323
0BS1BS2BS3BSBSBS
A continuación se presentan las 4 funciones de mezcla del B-Spline. En t = 0 y t = 1.
1.2. B-SPLINES NO RACIONALES Y NO UNIFORMES
La principal diferencia entre este tipo y los B-Splines no racionales y uniformes es que
los nodos no están equiespaciados. La primera consecuencia es que las funciones de
mezcla van a variar entre los distintos segmentos de la curva.
Las principales ventajas de este tipo de B-Splines sobre los uniformes son las siguientes:
La continuidad entre los segmentos puede variar entre C2, C1, C0 hasta alcanzar la
discontinuidad entre segmentos.
Si la continuidad es reducida a C0, entonces la curva interpola un punto de control pero
de una forma mucho menos drástica que en el caso de los splines uniformes.
8
UNTECS
INTERPOLACION B-SPLINE 2D CALCULO NUMERICO
Se pueden interpolar los puntos inicial y final.
Es posible añadir nodos y puntos de control a este tipo de splines y la curva resultante se
puede redibujar fácilmente.
Los B-Splines no racionales y no uniformes están formados por n + 1 puntos de control
que van desde P0 hasta Pn, que aproximan la trayectoria del spline, y por una secuencia no
decreciente de nodos (se permite la repetición de nodos) desde t0 hasta tn+4. El menor
número posible de puntos de control es 4, por lo tanto, el menor número de nodos es 8.
Cuando se repiten nodos se habla de multiplicidad de nodo. La siguiente tabla ilustra las
características de estos B-Splines según la multiplicidad de nodo:
Multiplicidad Continuidad Consecuencias
1 C2, G2
2 C1, G1 Se reduce el convex hull. Desaparece un segmento y los adyacentes
comparten sólo 2 puntos de control.
3 C0, G0 La curva interpola el punto de control. Desaparecen dos segmentos y los
adyacentes comparten 1 punto de control
4 Discontinuidad La curva no se dibuja entre dos de sus puntos de control. No hay puntos
de control comunes.
A continuación presentamos otra tabla idéntica pero que trata la multiplicidad de nodos,
en lugar de la multiplicidad de puntos de control.
Multiplicidad Continuidad Consecuencias
1 C2, G2
2 C2, G1 Los nodos permanecen en un convex hull menor.
9
UNTECS
INTERPOLACION B-SPLINE 2D CALCULO NUMERICO
3 C2, G0 La curva interpola el nodo repetido.
4 C2, G0 La curva interpola el nodo repetido y se interpolan los nodos
adyacentes.
El segmento de curva Qi(t) está definido por los puntos de control Pi–3, Pi–2, Pi–1 y Pi y por
las funciones de mezcla Bi–3,4(t), Bi–2,4(t), Bi–1,4(t), Bi,4(t) mediante la expresión siguiente:
La curva no está definida fuera del intervalo comprendido desde t3 hasta tn+1. Si ti = ti+1 el
spline es un punto.
A diferencia de las curvas vistas hasta ahora, las funciones de mezcla no se definen de
una forma sencilla, sino que se hace recursivamente. Bi,j(t) es la j-ésima función de
mezcla (función de orden j) para el punto de control P i. Para este tipo de splines se trabaja
con funciones de mezcla de orden 4:
)t(Btttt
)t(Btttt
)t(B
)t(Btttt
)t(Btttt
)t(B
)t(Btttt
)t(Btttt
)t(B
casootroen0
ttt1)t(B
3,1i1i4i
4i3,i
i3i
i4,i
2,1i1i2i
2i2,i
i2i
i3,i
1,1i1i3i
3i1,i
i1i
i2,i
1ii1,i
Como es de esperar, la computación de las funciones de mezcla es costosa. Restringiendo
la secuencia de nodos del B-Spline a intervalos que son o bien 0 o bien 1 se puede
almacenar un pequeño número de matrices correspondientes a la ecuación anterior y que
10
UNTECS
INTERPOLACION B-SPLINE 2D CALCULO NUMERICO
cubren todas las posibilidades de configuración de los nodos, eliminando la necesidad de
reevaluar las funciones de mezcla para cada segmento.
Para el caso de multiplicidad de nodos, alguno de los denominadores de la expresión
anterior puede valer cero, en este caso, se define que la división por cero da como
resultado un cero.
Cabe destacar la capacidad de este tipo de splines para representar formas complejas.
1.3. B-SPLINES RACIONALES Y NO UNIFORMES
Este tipo de splines también son conocidos por el acrónimo NURBS, que proviene de
Non Uniform Rational B-Splines.
Por el hecho de ser racionales sus puntos de control están definidos en coordenadas
homogéneas y los segmentos de curva responden a la ecuación siguiente:
)t(W)t(Z
)t(z,)t(W)t(Y
)t(y,)t(W)t(X
)t(x
Donde: X(t), Y(t), Z(t) y W(t) son curvas polinómicas cúbicas cuyos puntos de control
están definidos en coordenadas homogéneas. Si definimos el spline en el espacio
homogéneo, su ecuación sería:
)t(W)t(Z)t(Y)t(X)t(Q
Para pasar al espacio en tres dimensiones, se divide por W(t) cada una de las
coordenadas.
Cualquier curva no racional se puede convertir a una curva racional simplemente
añadiendo W(t) = 1 como cuarto elemento.
La principal ventaja de estos splines es que son invariantes a las operaciones de rotación,
escalado, traslación y a los cambios de perspectiva (las curvas no racionales no son
invariantes a los cambios de perspectiva). Por lo tanto, para hacer un cambio de
11
UNTECS
INTERPOLACION B-SPLINE 2D CALCULO NUMERICO
perspectiva de uno de estos splines basta con aplicar el cambio a cada uno de sus puntos
de control y redibujar la curva.
La otra ventaja es que permiten definir secciones cónicas, como parábolas, círculos y
elipses, con gran precisión (las curvas no racionales no pueden definir secciones cónicas,
únicamente pueden aproximarlas). Este tipo de curvas son muy utilizadas en aplicaciones
de CAD
Para definir secciones cónicas son necesarios B-Splines cuadráticos y la ecuación de su
expresión general es la siguiente:
Con los B-Splines cuadráticos, si se repite un nodo 2 veces entonces se interpola un punto
de control. Un nodo que se repite 3 veces fija los puntos inicial y final de la curva en
puntos de control.
CAPITULO 2
TIPOS DE B-SPLINE
diferencia de un Spline normal los B-Splines son curvas de interpolación a
trozos cuyos puntos definidos que delimitan cada segmento no son puntos por
los que pasa la curva, sino que son puntos de control, es decir, estos puntos
dan forma a la curva pero sin que la curva pase por ellos, a excepción del punto inicial y
del final, que según el tipo de B-Spline nos encontramos puede que la curva si pasa por
estos dos puntos (que es el caso de los B-splines abiertos) o bien la curva no llega a
tocarlos (en el caso de los B-splines uniformes).
A
12
UNTECS
INTERPOLACION B-SPLINE 2D CALCULO NUMERICO
B-Spline Spline
Formalmente una curva B-Spline es definida como una función Spline polinomial de
orden n-1 y de grado n, que satisface 2 condiciones:
1. La función P(t) resultante es polinomios de grado n en cada intervalo
x i≤t≤x i+12. P(t) y sus derivadas de orden 1,2,..., n-2 son continuas en toda la curva.
1.1. B-Spline Uniforme
Cuando la B-Spline es uniforme, las B-Splines básica para un determinado grado n son
sólo copias cambiadas de una a otra. Una alternativa no recursiva de la definición de la B-
splines m-n+1 básica es
b j , n ( t )=bn ( t−t j ) ; j=0 , .. . , m−n−1Con:
bn (t ):=n+1
n∑i=0
n+1
wi ,n (t−t i )n+ y
13
UNTECS
INTERPOLACION B-SPLINE 2D CALCULO NUMERICO
w i , n := ∏j=0 , j≠1
n+11
t j−t i
Donde (t−t i )n+ es la función de potencia truncada.
1.2. B-Spline Cardinal
Si se define B0 como la función característica de [−1
2;
12 ]
, y Bk recursivamente como
el producto convolución
Bk :=Bk−1∗B0 ; k=1,2 , .. ..Entonces Bk se llaman B-splines cardinal
(centrada). Esta definición se remonta a Schoenberg.
Bk tiene soporte compacto[− k+1
2;
k+12 ]
y es una función impar. Como
k→∞ las B-splines cardinales normalizadas tienden a la función de Gauss.
Notas
Cuando el número de puntos de control deBoor es el mismo que el grado, la B-Spline
degenera en una curva de Bézier. La forma de las funciones base es determinada por la
posición de los nudos. Escalar o trasladar el vector de nudo no altera las funciones de
base.
El Spline esta contenido en el casco convexo de sus puntos de control.
Un B-Spline básica de grado n b i , n ( t ) es distinta de cero sólo en el intervalo
[ t i ,t i+n+1] esto es
14
UNTECS
INTERPOLACION B-SPLINE 2D CALCULO NUMERICO
b i , n (t )=¿ {¿0 ; t i≤t≤t i+n+1¿ ¿¿¿En otras palabras si manipulamos un punto de control cambiamos sólo el comportamiento
local de la curva y no el comportamiento global como con las curvas de Bézier.
La función base se pueda obtener del polinomio Bernstein.
1.3. B-Spline Constante
La B-Spline constante es la Spline más simple. Se define en un solo tramo de nudo y ni
siquiera es continua en los nudos. Es sólo la función indicador de los diferentes tramos de
nudo.
b j , 0 (t )=1 ( t j , t j+1)¿ {1 ; t j≤t≤t j+1¿ ¿¿
1.3.1.B-Spline Lineal
La B-Spline lineal se define en dos tramos de nudo consecutivos y es continua sobre los
nudos, pero no diferenciable.
15
UNTECS
INTERPOLACION B-SPLINE 2D CALCULO NUMERICO
b j ,1 (t ) ¿ { t−t j
t j+1−t j
; t j≤t≤t j+1 ¿ { t j+2−t
t j+2−t j+1
; t j+1≤t≤t j+2 ¿¿¿
1.3.2.B-Spline Cuadrática Uniforme
B-splines cuadráticas con nudo-vector uniforme es una forma común de B-Spline. La
función de mezclado puede ser calculada fácilmente, y es igual para cada segmento, en
este caso.
b j , 2 ( t ) ¿ {12 t2 ¿ {−t2+t+ 12¿¿¿
Puesto en forma de matriz, esto es:
Si (t )=[ t2 t 1 ]12 [1 −2 1−2 2 01 1 0 ] [ pi−1
pi
pi−1]
parat∈ [0,1 ] , i=1,2 .. . ,n−1
16
UNTECS
INTERPOLACION B-SPLINE 2D CALCULO NUMERICO
1.3.3.B-Spline Cubica
Una formulación B-Spline para un solo segmento puede ser escrita como:
Si ( t )=∑k=0
3
Pi−3+k bi−3+k , 3 ( t ); t∈ [0,1 ]
Donde Si es el e-simo segmento B-Spline y P es el conjunto de puntos de control, el
segmento i y k es el índice del punto de control local. Un conjunto de puntos de control
sería P:
Pw
i (t )=(wi x i , wi y i , wi zi , wi )Donde el wi es el peso, tirando de la curva hacia el punto de control Pi mientras que
aumenta o se desplazan fuera de la curva, mientras que disminuye.
Toda una serie de segmentos, las curvas n-2 en (S3,S4,...,Sn) definidas por n+1 puntos de
control
(P0 ,P1 ,. .. , Pn ) ;donden≥3
como un B-Spline en t se definiría como:
S ( t )=∑i=0
n−1
Pi bi ,3 ( t )
donde i es el número de puntos de control y t es un parámetro global dado los valores de
los nudos. Esta formulación expresa una curva B-Spline como una combinación lineal de
funciones B-Spline básicas, de ahí el nombre.
Hay dos tipos de B-Spline - uniforme y no uniforme. Una B-Spline no uniforme es una
curva donde los intervalos entre los puntos sucesivos de control no es, o no
17
UNTECS
INTERPOLACION B-SPLINE 2D CALCULO NUMERICO
necesariamente es igual (el vector de nudos de espacios de nudo interiores no son
iguales). Una forma común es donde los intervalos se reducen sucesivamente a cero,
interpolando los puntos de control.
1.3.4.B-Spline cubica uniforme
La B-Spline cúbica con vector-nudo uniforme es la forma más usual de B-Spline. La
función de mezcla puede ser fácilmente calculada, y es igual para cada segmento, en este
caso. Puesto en forma de matriz, esto es:
Si (t )=[ t3 t2 t 1 ]16 [−1 3 −3 1
3 −6 3 0−3 0 3 01 4 1 0
][ p i−1
p i
p i+1
p i+2]
parat∈ [0,1 ]
CAPITULO3
B-SPLINES EXPRESADOS ANALÍTICAMENTE
n este capítulo presentamos el algoritmo implementado BFEA(Función B-Spline
Expresada Analíticamente) para generar las expresiones analíticas de las funciones
B-splines con algún sistema de cálculo simbólico. Partimos de la definición recursiva,
E 18
UNTECS
INTERPOLACION B-SPLINE 2D CALCULO NUMERICO
planteada por Cox-deBoor, de las funciones B-Spline y a partir de ella elaboramos una
definición alternativa que constituye por sí misma el algoritmo BFEA.
1.4. DEFINICIÓN RECURSIVA DE LOS B-SPLINES
Sean k∈N y una sucesión no decreciente de números reales x={x i} de longitud por lo
menos k + 1, llamada vector de nodos o sucesión de nodos. El i-ésimo B-Spline de orden
k respecto al vector de nodos x se define por
N i , k( t )=t−x i
x i+k−1− xi
N i , k−1( t )+x i+k−t
x i+k−x i+1
N i+1 , k−1 ( t )…(1)
para todo número real t, con
N i ,1 ( t )=¿ {0 , t<x i¿ {1 , t<x i+1 ¿¿¿¿…(2)
Aquí se adopta la convención 00=0
.
2.2 FUNDAMENTOS DEL ALGORITMO BFEA
En (2) las funciones N i ,1 ya tienen una expresión analítica clara. Veamos que sucede
para los valores k>2 . Por ejemplo y de acuerdo a (1), la expresión analítica de las
funciones N i ,2 se obtiene así
N i ,2 ( t )=t− xi
xi+k−1−x i
N i ,1( t )+x i+k−t
xi+k−x i+1
N i+1,1( t ).
19
UNTECS
INTERPOLACION B-SPLINE 2D CALCULO NUMERICO
Al reemplazar las funciones N i ,1 y
N i+1,1 por sus respectivas expresiones analíticas
obtenemos
N i ,2 ( t )=t− xi
xi+k−1−x i
¿ {0 , t< xi ¿ {1, t<x i+1 ¿ ¿¿¿
La dificultad que encontramos es que no se obtiene directamente un valor 1 ó 0, para
N i ,1 y N i+1,1 , sino que aparecen las “condicionales”
{0 ,t<x i¿ {1 , t<x i+1 ¿¿¿¿ y
{0 ,t<x i+1 ¿ {1 , t<x i+2¿ ¿¿¿.
Por supuesto que en forma manual la expresión (3) puede operarse hasta obtener el
siguiente resultado
N i ,2 ( t )=¿ {0 ,t<x i¿ { t−xi
x i+k−1−x i
,t<x i+1 ¿¿¿¿¿
Más aun, esta expresión puede simplificarse aplicando las reglas de suma de funciones de
tal manera que se obtiene
N i ,2 ( t )=¿ {0 , t<x i ¿ { t− xi
x i+ k−1−xi
, t< xi+1 ¿ { x i+k−tx i+k−x i+1
, t< xi+2 ¿ ¿¿¿¿. ... (4)
20
UNTECS
INTERPOLACION B-SPLINE 2D CALCULO NUMERICO
Dado que la programación simbólica no toma decisiones para efectuar estas operaciones
debemos buscar una forma de llegar al mismo resultado, efectuando operaciones
matemáticas válidas, pero siguiendo un “camino” diferente. Planteemos entonces la
posibilidad de operar por intervalos. Supongamos que se plantea trabajando con la misma
función, N i ,2 . Para esta función en intervalo
[ x i , x i+1¿¿ se tiene
N i ,2 ( t )=t− xi
xi+k−1−x i ,
puesto que en este intervalo el valor de las funciones N i ,1 es 1 y el de las funciones
N i+1,1 es 0; y en el intervalo [ x i+1 , x i+2¿¿ las mismas funciones se expresan
N i ,2 ( t )=x i+ k−t
xi+k−x i+1 ,
ya que en este otro intervalo el valor de las funciones N i ,1 es 0 y el de las funciones
N i+1,1 es 1. Teniendo en cuenta que fuera de estos intervalos el valor de las funciones
N i ,2 es cero, podemos escribir las expresiones analíticas de las funciones N i ,2 como en
(3).
De acuerdo a lo hasta aquí planteado vemos que surge la necesidad de conseguir, de
alguna manera, que las funciones puedan trabajarse por intervalos para luego anexarle los
respectivos dominios. ¿Y cómo lograr semejante resultado? Una primera idea para
responder a esta interrogante es la que se explica a continuación.
Sea la secuencia de nodos x={x1 , x2 ,…, xn+1}, con n∈N . Con respecto a x se pueden
definir n funciones N i ,1 : R→R
, a saber:
21
UNTECS
INTERPOLACION B-SPLINE 2D CALCULO NUMERICO
N1,1 ( t )=¿ {0 , t< x1 ¿ {1 , t<x2 ¿ ¿¿¿,
N2,1 ( t )=¿ {0 , t< x2¿ {1 , t< x3 ¿ ¿¿¿, … ,
Nn , 1( t )=¿ {0 , t<xn ¿ {1 , t<xn+1 ¿ ¿¿¿.
Nótese que la secuencia {x1 , x2 ,… , xn+1} se particiona en n intervalos, los cuales son:
[ x1 , x2¿¿ , [ x2 , x3¿¿ , … ,
[ xn , xn+1¿¿ .
Procederemos a construir una matriz cuadrada de orden n . Las columnas indicaran los n
intervalos que se han generado con los nodos {x1 , x2 ,… , xn+1} y las filas indicaran el
valor de cada una de las n funciones N i ,1 : R→R
, definidas con respecto a
{x1 , x2 ,… , xn+1}:
¿ ¿ [ x2 , x3 ¿ ¿⋯¿[ x i , xi+1¿ ¿⋯¿[ xn , xn+1¿ ¿N1,1( t ) ¿1 ¿0 ¿⋯¿0 ¿⋯¿0 ¿N 2,1( t ) ¿0 ¿1 ¿ ¿0 ¿⋯¿0 ¿⋮¿⋮¿ ¿⋱¿ ¿ ¿⋮¿N i , 1( t ) ¿0 ¿0 ¿ ¿1 ¿ ¿0 ¿⋮¿⋮¿⋮¿ ¿ ¿⋱¿ ¿Nn , 1( t ) ¿0 ¿0 ¿⋯¿ 0 ¿ ¿1 ¿¿... (5)
Se aprecia claramente que la matriz así formada es una matriz identidad. Lo que resta es
aprovechar esta construcción para nuestro propósito. Con esta finalidad anotaremos, a
continuación, dos ideas clave:
22
UNTECS
INTERPOLACION B-SPLINE 2D CALCULO NUMERICO
i. Surge una forma de obtener el valor de cualquiera de las funciones indicadas en las
columnas en cualquiera de los intervalos indicados en las filas de la matriz obtenida.
ii. En segundo lugar destaquemos que es factible utilizar el algoritmo para construir una
matriz identidad, el cual nos dice lo siguiente:
I n=( iij)n×n /iij=¿ {1 ,i= j ¿ ¿¿¿, donde δ es la función delta de
Kronecker.
Para lograr nuestro propósito definamos ahora a [ x j , x j+1¿¿ como el j -ésimo intervalo
formado a partir de los nodos x j , x j+1 . Luego añadiremos el subíndice j a
N i ,1 para
indicar que el valor que se obtenga es el valor de N i ,1 en el intervalo
[ x j , x j+1¿¿ , en
forma breve podemos anotar N i ,1 , j ( t )=δ i
j.
Como podrá verse esta nueva notación nos permitirá obtener el valor de cualquier función
N i ,1 en algún j -ésimo intervalo. Por ejemplo, N1,1,1 (t ) devuelve el valor de N1,1 ( t )
en el primer intervalo (esto es, en [ x1 , x2¿¿), así tenemos N1,1,1 (t )=1 . De la misma
manera N1,1,2 (t ) devuelve el valor de N1,1 ( t ) en el segundo intervalo (esto es, en
[ x2 , x3¿¿ ), por lo cual N1,1,2 (t )=0 ; etc.
Este resultado no sería útil de no ser porque es factible añadir este mismo subíndice a las
funciones N i , k y de esta manera puede operarse por intervalos para obtener las
funciones N i , k (k>1 ) expresadas analíticamente. Estas operaciones se asemejan a las
que se realizaron cuando se obtuvo (4) y (5).
23
UNTECS
INTERPOLACION B-SPLINE 2D CALCULO NUMERICO
Por ejemplo, para obtener las expresiones analíticas de las funciones N i ,2 procederemos
como sigue. En el intervalo j=i (esto es [ x i , x i+1¿¿ ) de acuerdo a (1) obtenemos
N i ,2 , i( t )=t− xi
x i+ k−1−xi
y en el intervalo j=i+1 (esto es [ x i+1 , x i+2¿¿ ) también de acuerdo a (1) obtenemos
N i ,2 , i+1 ( t )=xi+k−t
x i+k−x i+1.
Y puesto que fuera de estos intervalos el valor de las funciones N i ,2 es cero, obtenemos
nuevamente la expresión (3). De manera similar podemos trabajar por intervalos para
valores de k mayores que 2 y así partiendo de las ideas (i) y (ii) hemos llegado a
implementar un algoritmo que puede emplearse para obtener las expresiones analíticas de
las funciones B-splines con asistencia de un lenguaje de programación simbólico. Esto
gracias a que al operar por intervalos nos independizamos de “condicionales” como las
que aparecieron en (2) y trabajamos directamente con el valor 1 o con el valor 0.
2.3 ALGORITMO BFEA PARA GENERAR LAS EXPRESIONES ANALÍTICAS DE LOS B-SPLINES
En resumen, las expresiones analíticas de las funciones B-Splines de orden k definidas
respecto al vector de nodos x={x i}, pueden obtenerse mediante la siguiente fórmula
recursiva
N i , k , j( t )=t−xi
x i+k−1−x i
N i , k−1, j( t )+x i+k−t
x i+k−x i+1
N i+1 , k−1 , j (t )
,
24
UNTECS
INTERPOLACION B-SPLINE 2D CALCULO NUMERICO
con N i ,1 , j ( t )=δ i
j
; donde j
representa el j
-ésimo intervalo [ x j , x j+1¿¿
y δ
es la
función delta de Kronecker. Incluyendo la convención
00=0
,
2.4 REALIZACON DE UN B-SPLINE
La realización de un B-Spline consta de 3 partes:
Hacer los nodos.
Generar las funciones básicas.
Generar el propio B-Spline.
1.1.1.Nodos
Consiste en calcular una serie de puntos equidistantes. El único requisito para el vector de
nodos es que cumpla la siguiente relación: x i≤x i+1
Dependiendo del número de puntos y el orden del B-Spline se obtendrá un conjunto de
puntos que usualmente comienzan con el 0 y de forma periódica van aumentando. Para
cada tipo de B-splines existen nodos diferentes:
En el caso de los uniformes se utiliza la siguiente función:
N i , k (t )=N i−1, k (t−1 )=N i+1, k (t+1 ) En los uniformes abiertos el vector de nodos tienen multiplicidad de valores al final
del vector igual que el orden de la función base del B-Spline.
{x t=0 ;1≤i≤k ¿ {x t=i−k ;k+1≤i≤n+1 ¿ ¿¿¿Donde k es el orden del B-Spline y n el número de puntos.
25
UNTECS
INTERPOLACION B-SPLINE 2D CALCULO NUMERICO
1.1.2.Funciones Básicas
Establece la relación entre el polígono (los vértices del polígono que son los puntos de
entrada) y la curva.
La elección del vector de nodos no influye en la función base. El resultado de las
funciones básicas uniformes abiertas genera curvas que se comportan como curvas de
Bézier.
¿¿¿¿
Éste cálculo es común para los dos tipos de B-Spline. Se adapta el convenio: 0/0 es 0.
1.1.3.Creación del B-Spline
Finalmente, haciendo el producto matricial entre los valores obtenidos en las funciones
básicas y de los vértices poligonales se obtiene el punto de la curva resultante. Iterando el
resultado de la función básica sobre los vértices del polígono se va obteniendo toda la
curva del B-Spline.
2.5 ALGORITMOS
2.5.1Funciones Básicas
/*Subrutina para generar funciones básicas de B-Splines para vectores con nodos abiertos*/
c = orden de la función básica del B-Splined = primer término de la relación recursiva de la función básicae = segundo término de la relación recursiva de la función básica
26
UNTECS
INTERPOLACION B-SPLINE 2D CALCULO NUMERICO
npts = número de puntos que definen el polígono (puntos iníciales)n(,) = array que contiene las funciones básicasnplusc = constante (npts + c). Máximo número de valores de nodot = valor del parámetrotemp() = array temporalx() = vector de nodos
//Se calcula el primer orden de las funciones básicas
for i=1 to nplusc-1if t>=x(i) and t<x(i+1) then
temp(i)=1else
temp(i)=0end if
nextfor
//Calcular las funciones básicas de mayor orden
for k=2 to cfor i=1 to nplusc-k
if temp(i)<>0 thend=((t-x(i))*temp(i))/(x(i+k-1)-x(i))
elsed=0
end ifif temp(i+1)<>0 then
e=((x(i+k)-t)*temp(i+1))/(x(i+k)-x(i+1))else
e=0end iftemp(i)=d+e
nextfornextfor
if t = x(nplusc) then temp(npts)=1Poner en un array for i=1 to npts
n(1,i)=temp(i)next iif t=x(nplusc) then n(1,npts)=1return
1.3.1.Nodos abiertos
/*Subrutina para generar vector de nodos abiertos para B-Splines*/
c = orden de la función básica del B-splinen = número de puntos que definen el polígono (puntos iníciales)nplusc = constante (npts + c). Máximo número de valores de nodox() = vector de nodos
subrutina nodos(n,c;x())
27
UNTECS
INTERPOLACION B-SPLINE 2D CALCULO NUMERICO
nplusc = n+cnplus2 = n+2for i=2 to nplusc-1
if t>c and i<nplus2 thenx(i)=x(i-1)+1
elsex(i)=x(i-1)
end ifnextforreturn
1.4.1. Nodos uniformes
/*Subrutina para generar vector de nodos uniformes para B-Splines*/
c = orden de la función básica del B-splinen = número de puntos que definen el polígono (puntos iníciales)nplusc = constante (npts + c). Máximo número de valores de nodox() = vector de nodos
subrutina nodos(n,c;x())nplusc = n+cfor i=1 to nplusc
x(i)=(i-1)nextforreturn
1.3.4. B-Splines abiertos
//Subrutina para generar B-Splines con nodos abiertos.
b(,) = array que contiene los vérticesb(,) = array que contiene los puntos de la curvak = orden de la función básica del B-splinenbasis = array con las funciones básicas para un simple valornpts = número de puntos que definen el polígono (puntos iníciales)nplusc = constante (npts + c). Máximo número de valores de nodot = valor del parámetrox() = vector de nodos
p1 = núnero de puntos para ser calculado en la curva
//Inicialización del vector de nodos y del array de funciones básicas
Mat nbasis = Zer(1,npts)Mat x = Zer(nplusc)
//Generar el vector de nodos uniformes
Call nodos(npts,k;x)icount = 0
28
UNTECS
INTERPOLACION B-SPLINE 2D CALCULO NUMERICO
Calcular los puntos de la curva del b-spline for t=0 to x(npts+k) step x(npts+k)/(p1-1) icount = icount+1 Call Basicas(k,t,npts,x;nbasis) Mat temp=nbasis*b
b(,) = array que contiene los vérticesb(,) = array que contiene los puntos de la curvak = orden de la función básica del B-splinenbasis = array con las funciones básicas para un simple valornpts = número de puntos que definen el polígono (puntos iníciales)nplusc = constante (npts + c). Máximo número de valores de nodot = valor del parámetrox() = vector de nodosp1 = núnero de puntos para ser calculado en la curva