Google
En toda la web
En eumed·net






Pulse aquí para acceder al índice general del libro.

Esta página muestra solo parte del texto, y carece de formato, notas, fórmulas, esquemas, tablas o gráficos.
Pulse aquí para bajarse el Libro completo en formato ZIP (37 páginas, 254 Kb)

 

B-splines con Mathematica 5.1

Capítulo 2
Expresiones Analíticas de las curvas de B-splines




En 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.

2.1 Definición recursiva de las curvas de B-splines
Sean , la secuencia de nodos con . La restricción de
,
(incluyendo la convención ) al intervalo es llamada curva de B-splines de orden k respecto a la secuencia de nodos y asociada al conjunto de puntos . Los coeficientes son llamados puntos de control o puntos de de Boor. Al polígono determinado por el conjunto se le denomina polígono de control.

2.2 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 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.

Mathematica incluye el paquete ComputationalGeometry que incorpora el comando ConvexHull, con el cual es posible obtener la cápsula convexa de un conjunto finito de puntos del plano (ver [2]).

A continuación mostramos un ejemplo de cómo funciona este comando, para ello consideramos el siguiente conjunto de puntos del plano
asignados a la variable data2D.


Cargando el paquete ComputationalGeometry y obteniendo la cápsula convexa del conjunto de puntos dado.

Esta 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. Note que esta salida ha sido asignada a la variable capsulaconvexa.

Gráfica de la cápsula convexa del conjunto de puntos data2D.
PlanarGraphPlot[data2D, cápsulaconvexa]


Otra forma de graficar la cápsula convexa del conjunto de puntos data2D.
Show[
Graphics[
{RGBColor[0,1,1],
Polygon[Map[data2D[[#]]&,cápsulaconvexa]]}
],AspectRatio->Automatic
]


2.3 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 definidas respecto a la secuencia de nodos , con , y asociada al conjunto de puntos pueden obtenerse mediante

incluyendo la convención , donde representa el -ésimo intervalo, .
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.

2.4 Curvas de B-splines obtenidas con el algoritmo BFEA en Mathematica
En el artículo anterior se da una fórmula, basada en el algoritmo BFEA, para obtener las expresiones analíticas de las curvas de B-splines por intervalos. En el presente artículo implementaremos esta fórmula para probar su efectividad.

Primero codificamos las funciones B-splines, tal como se hizo en la sección 1.4.

Luego codificamos las curvas de B-splines como sigue.
Una vez hecha esta codificación la utilizamos para encontrar las ecuaciones matemáticas de la curva de B-splines de tercer orden (k = 3) definida para el siguiente conjunto de puntos: (1,1), (2,3), (3,1), (5,4), (7,2) y la secuencia de nodos {0,1,2,3,4,5,6,7}; en cada uno de los intervalos que forman a partir de la secuencia de nodos dada.

Curva de B-plines de tercer orden definida para el conjunto de puntos (1,1), (2,3), (3,1), (5,4), (7,2), la secuencia de nodos
Par abreviar utilizaremos el comando Table.

Curva de B-plines de tercer orden definida para el conjunto de puntos


Hemos asignado la salida en la variable cc, con el propósito de visualizar la gráfica de la curva, para ello seguimos el siguiente proceso.

Gráfica de la curva de B-plines de tercer orden definida para el conjunto de puntos (1,1), (2,3), (3,1), (5,4), (7,2), la secuencia de nodos {0,1,2,3,4,5,6,7}.
graf=ParametricPlot[
Which[t<1,cc[[1]],t<2,cc[[2]],t<3,
cc[[3]],t<4,cc[[4]],t<5,cc[[5]],t<6,cc[[6]],t<7,cc[[7]]]
,{t,2,5}]



Gráfica de la curva de B-plines de tercer orden definida para el conjunto de puntos (1,1), (2,3), (3,1), (5,4), (7,2), la secuencia de nodos {0,1,2,3,4,5,6,7} y su polígono de control.
Show[graf,Graphics[{RGBColor[1,0,0],Line[{{1,1},{2,3},{3,1},{5,4},{7,2}}]}]]


De la misma manera se puede obtener las expresiones analíticas de una curva de B-splines definida para un conjunto de puntos de R3. Esto se hace de la siguiente manera.

Curva de B-plines de tercer orden definida para el conjunto de puntos (1,1,1), (2,3,0), (3,1,1), (5,4,-1), (7,2,1), la secuencia de nodos {0,1,2,3,4,5,6,7}.
cc=Table[
Curva[t,3,j,{0,1,2,3,4,5,6,7},
{{1,1,1},{2,3,0},{3,1,1},{5,4,-1},{7,2,1}}],
{j,7}]//Simplify



Gráfica de la curva de B-plines de tercer orden definida para el conjunto de puntos (1,1,1), (2,3,0), (3,1,1), (5,4,-1), (7,2,1), la secuencia de nodos {0,1,2,3,4,5,6,7}.
graf=ParametricPlot[
Which[t<1,cc[[1]],t<2,cc[[2]],t<3,
cc[[3]],t<4,cc[[4]],t<5,cc[[5]],t<6,cc[[6]],t<7,cc[[7]]]
,{t,2,5}]




Gráfica de la curva de B-plines de tercer orden definida para el conjunto de puntos (1,1,1), (2,3,0), (3,1,1), (5,4,-1), (7,2,1), la secuencia de nodos {0,1,2,3,4,5,6,7} y su polígono de control.
Show[graf,Graphics3D[{RGBColor[1,0,0],Line[{{1,1,1},{2,3,0},{3,1,1},{5,4,-1},{7,2,1}}]}]]


Como se aprecia con el algoritmo BFEA hemos sido capaces de obtener las expresiones analíticas de las curvas de B-splines, para dos conjuntos de puntos. Por supuesto, que con este mismo código pueden obtenerse las expresiones analíticas de las curvas de B-splines para un conjunto de puntos de Rn. Esto nos muestra la utilidad y efectividad del algoritmo BFEA.