Top Banner
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
44
Welcome message from author
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
Page 1: B-Spline-2D

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

Page 2: B-Spline-2D

INTERPOLACION B-SPLINE 2D CALCULO NUMERICO

INDICE

Índice...................................................................................................................................2

Introducción.......................................................................................................................3

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

2.1. B-Spline Uniforme...................................................................................142.2. B-Spline Cardinal....................................................................................142.3. B-Spline Constante..................................................................................152.4. B-Spline Lineal........................................................................................162.5. B-Spline Cuadrática uniforme.................................................................162.6. B-Spline Cubica.......................................................................................172.7. B-Spline Cubica Uniforme......................................................................18

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

Bibliografía/Linkografía.................................................................................................33

2

UNTECS

Page 3: B-Spline-2D

INTERPOLACION B-SPLINE 2D CALCULO NUMERICO

INTRODUCCION

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

Page 4: B-Spline-2D

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

Page 5: B-Spline-2D

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

Page 6: B-Spline-2D

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

Page 7: B-Spline-2D

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

Page 8: B-Spline-2D

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

Page 9: B-Spline-2D

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

Page 10: B-Spline-2D

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

Page 11: B-Spline-2D

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

Page 12: B-Spline-2D

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

Page 13: B-Spline-2D

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

Page 14: B-Spline-2D

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

Page 15: B-Spline-2D

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

Page 16: B-Spline-2D

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

Page 17: B-Spline-2D

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

Page 18: B-Spline-2D

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

Page 19: B-Spline-2D

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

Page 20: B-Spline-2D

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

Page 21: B-Spline-2D

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

Page 22: B-Spline-2D

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

Page 23: B-Spline-2D

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

Page 24: B-Spline-2D

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

Page 25: B-Spline-2D

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

Page 26: B-Spline-2D

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

Page 27: B-Spline-2D

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

subrutina básicas(c,t,npts,x();n(,))dimensión temp(20)nplusc = npts+c

//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

Page 28: B-Spline-2D

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

subrutina bspline(k,p1,npts,b(,);p(,))dimensión nbasis(1,20),x(30),temp(1,3)nplusc = npts+k

//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

Page 29: B-Spline-2D

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

p(icount,1)=temp(1,1) p(icount,2)=temp(1,2) p(icount,3)=temp(1,3)nextforreturn

1.3.5.B-Splines uniformes

//Subrutina para generar B-Splines uniformes.

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

subrutina bspline(k,p1,npts,b(,);p(,))dimension nbasis(1,20),x(30),temp(1,3)nplusc = npts+k

//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

//Calcular los puntos de la curva del b-spline

for t=(k-1) to (npts) step (npts-k-1)/(p1-1) icount = icount+1 Call Basicas(k,t,npts,x;nbasis) Mat temp=nbasis*b

p(icount,1)=temp(1,1) p(icount,2)=temp(1,2) nextforreturn

29

UNTECS

Page 30: B-Spline-2D

INTERPOLACION B-SPLINE 2D CALCULO NUMERICO

30

UNTECS

Page 31: B-Spline-2D

INTERPOLACION B-SPLINE 2D CALCULO NUMERICO

Capítulo 4

EXPRESIONES ANALÍTICAS DE LASCURVAS DE B-SPLINES

n este capítulo utilizamos el algoritmo BFEA para obtener las expresiones

analíticas de las curvas de B-splines. Este mismo algoritmo resulta útil para obtener

las expresiones analíticas de las curvas de B-splines puesto que éstas se definen a partir

de las funciones B-splines.

E

1.4. DEFINICIÓN RECURSIVA DE LAS CURVAS DE B-SPLINES

Sean k∈N , la secuencia de nodos x={x i} con x i≤x i+k ∀ i∈N . La restricción de

α ( t )=∑i=1

n+1

p i N i , k (t ), pi∈Rn

,

(incluyendo la convención 00=0

) al intervalo [ a , b ]⊂R es llamada curva de B-splines

de orden k respecto a la secuencia de nodos x={x i} y asociada al conjunto de puntos

pi . Los coeficientes pi son llamados puntos de control o puntos de Boor. Al

polígono determinado por el conjunto P={pi}i=1

n+1 se le denomina polígono de

control.

31

UNTECS

Page 32: B-Spline-2D

INTERPOLACION B-SPLINE 2D CALCULO NUMERICO

1.5. DEFINICIÓN DE POLÍGONO DE CONTROL (CÁPSULA CONVEXA)

Más adelante cuando se mencionen las propiedades de las curvas de B-splines se

mencionará la llamada cápsula convexa. Por ello daremos, a continuación, la definición

de la misma.

Definición.

(1) Un conjunto C de puntos es convexo si para todo p, q C el segmento de recta

pq está contenido en C.

(2) La cápsula convexa de un conjunto S de puntos es el conjunto convexo más

pequeño C que contiene a S.

Observación.

La cápsula convexa de un conjunto finito de puntos S es un polígono convexo cuyos

vértices (puntos de esquina) son elementos de S.

Consideramos el siguiente conjunto de puntos del plano:(4.4,14), (6.7,15.25), (6.9,12.8),

(2.1,11.1), (9.5,14.9), (13.2,11.9), (10.3,12.3), (6.8,9.5),(3.3,7.7), (0.6,5.1), (5.3,2.4),

(8.45,4.7), (11.5,9.6), (13.8,7.3), (12.9,3.1), (11,1.1)

La salida nos indica que la cápsula convexa esta conformada por la unión de los puntos

que están en las posiciones 14, 6, 5, 2, 1, 4, 10, 11, 16, 15, 14, en ese orden.

32

UNTECS

Page 33: B-Spline-2D

INTERPOLACION B-SPLINE 2D CALCULO NUMERICO

1.6. EL ALGORITMO BFEA EN LA OBTENCIÓN DE LAS EXPRESIONES

ANALÍTICAS DE LAS CURVAS DE B-SPLINES

En la definición de las curvas de B-splines aparecen las funciones B-splines. Por esta

razón el algoritmo BFEA también es de utilidad para obtener las expresiones analíticas de

las curvas de B-splines.

Podemos escribir, entonces, que las expresiones analíticas de las curvas de B-splines de

orden k definidas respecto a la secuencia de nodos x={x i}, con x i<x i+k ∀ i∈N , y

asociada al conjunto de puntos P={pi}i=1n+1⊂Rn

pueden obtenerse mediante

α ( t )=∑i=1

n+1

p i N i , k , j( t ) , p i∈Rn

incluyendo la convención 00=0

, donde j∈Z representa el j -ésimo intervalo,

[ x j , x j+1¿¿ .

Lo que estamos obteniendo con esta definición alternativa son las ecuaciones

matemáticas de la curva de B-splines por intervalos, es decir por trozos.

33

UNTECS

Page 34: B-Spline-2D

INTERPOLACION B-SPLINE 2D CALCULO NUMERICO

BIBLIOGRAFIA

B-Splines con Mathematica 5.1-Ipanaque, Urbinay Correa.

LINKOGRAFIA

Creación e implementación de algoritmos de formación de B-Spliner

http://www.nablazone.com/b-splinner/

http://sabia.tic.udc.es/gc/teoria/Curvas/

http://www.ncrg.aston.ac.uk/Projects/BiOrthog/examples.html

34

UNTECS