Curvas Paramétricas, Curvas de Bezier, Splines, B

III ENCUENTRO GEOGEBRA
COM9. Curvas Paramétricas, Curvas de Bézier, Splines y B-Splines con GeoGebra.
F. Damián Aranda Ballesteros
[email protected]
En aplicaciones de diseño, una curva o superficie se define a menudo, especificando interactivamente un conjunto de puntos de
control, los cuales indican la forma de la curva. Estos puntos de control serán usados por GeoGebra para formar ecuaciones
paramétricas polinómicas y dibujar la curva definida. Cuando la curva desplegada pasa a través de los puntos de control, se dice que
interpola los puntos de control.
Por otro lado, se dice que los puntos de control se aproximan si la curva desplegada pasa cerca de ellos.
Existen muchas técnicas para determinar ecuaciones paramétricas polinómicas de curvas y superficies, dada las coordenadas de los
puntos de control. Entre los métodos básicos para representar curvas especificas con puntos de control, se incluyen las formulaciones
de las curvas de Bézier, de Hermite y las curvas B-Spline.
Curva de Bézier
Curva de Hermite
B-Spline cúbica
1.- Curvas de Bézier.
Pierre Bézier, ingeniero francés desarrolló este método de aproximación para utilizarlo en el diseño de carrocerías de
los automóviles Renault. Las curvas de Bézier tienen varias propiedades que hacen que sean muy útiles y convenientes para el diseño
de curvas y superficies. Asimismo, es fácil implementarla en cualquier programa de Cálculo Simbólico. También lo es en GeoGebra.
Por esos motivos las curvas de Bézier están disponibles en forma común en varios sistemas de CAD, en paquetes generales
de gráficas y en paquetes seleccionados de dibujo y pintura.
Curvas de Bézier.
En general, es posible ajustar una curva de Bézier para cualquier número de puntos de control. El número de puntos de control que se
debe aproximar y su posición relativa determina el grado de polinomio de Bézier. Veamos su construcción con mayor detalle:
1.- Construcción geométrica.
(Ver archivo) Construccion_1_Beziergeometrica
2.- Construcción analítica.
En definitiva, resultan unos coeficientes para la curva ๐ฟ ๐‘ก = 1 โˆ’ ๐‘ก 3 ๐ด + 3๐‘ก 1 โˆ’ ๐‘ก 2 ๐ต + 3๐‘ก 2 1 โˆ’ ๐‘ก ๐ถ + ๐‘ก 3 ๐ท, conocidos como Polinomios
de Bernstein y que suman todos ellos la unidad. En general, para n+1 puntos de control, los coeficientes de la curva paramétrica,
๐‘›
๐‘ ๐‘’๐‘Ÿá๐‘› ๐‘™๐‘œ๐‘  ๐‘ƒ๐‘œ๐‘™๐‘–๐‘›๐‘œ๐‘š๐‘–๐‘œ๐‘  ๐‘‘๐‘’ ๐ต๐‘’๐‘Ÿ๐‘›๐‘ ๐‘ก๐‘’๐‘–๐‘›: ๐‘›๐‘˜ (1 โˆ’ ๐‘ก)๐‘› โˆ’๐‘˜ ๐‘ก ๐‘˜ . Obsérvese que 1 โˆ’ ๐‘ก + ๐‘ก = 1.
Esta propiedad le confiere a la curva una importante propiedad: Queda en el interior de la clausura convexa que determinan el
conjunto de sus puntos de control. Su construcción con GeoGebra será así.
A partir de los puntos dados, A, B, C, D, creamos dos listas
๐ฟ1 = ๐‘™๐‘–๐‘ ๐‘ก๐‘Ž ๐’‚๐’ƒ๐’”๐’„๐’Š๐’”๐’‚๐’” ๐‘‘๐‘’ ๐‘™๐‘œ๐‘  ๐‘๐‘ข๐‘›๐‘ก๐‘œ๐‘  ๐‘‘๐‘Ž๐‘‘๐‘œ๐‘  ๐‘ฆ ๐ฟ2 = ๐‘™๐‘–๐‘ ๐‘ก๐‘Ž ๐’๐’“๐’…๐’†๐’๐’‚๐’…๐’‚๐’” ๐‘‘๐‘’ ๐‘™๐‘œ๐‘  ๐‘๐‘ข๐‘›๐‘ก๐‘œ๐‘  ๐‘‘๐‘Ž๐‘‘๐‘œ๐‘  .Copiamos en la línea de entrada:
๐‘ƒ๐‘ฅ = ๐‘†๐‘ข๐‘š๐‘Ž ๐‘†๐‘’๐‘๐‘ข๐‘’๐‘›๐‘๐‘–๐‘Ž ๐‘ú๐‘š๐‘’๐‘Ÿ๐‘œ๐ถ๐‘œ๐‘š๐‘๐‘–๐‘›๐‘Ž๐‘ก๐‘œ๐‘Ÿ๐‘–๐‘œ 3, ๐‘– 1 โ€“ ๐‘ฅ
3โ€“๐‘– ๐‘–
๐‘ƒ๐‘ฆ = ๐‘†๐‘ข๐‘š๐‘Ž ๐‘†๐‘’๐‘๐‘ข๐‘’๐‘›๐‘๐‘–๐‘Ž ๐‘ú๐‘š๐‘’๐‘Ÿ๐‘œ๐ถ๐‘œ๐‘š๐‘๐‘–๐‘›๐‘Ž๐‘ก๐‘œ๐‘Ÿ๐‘–๐‘œ 3, ๐‘– 1 โˆ’ ๐‘ฅ
๐‘ฅ ๐ธ๐‘™๐‘’๐‘š๐‘’๐‘›๐‘ก๐‘œ ๐ฟ1 , ๐‘– + 1 , ๐‘–, 0, 3
3โˆ’๐‘– ๐‘–
๐‘ฅ ๐ธ๐‘™๐‘’๐‘š๐‘’๐‘›๐‘ก๐‘œ ๐ฟ2 , ๐‘– + 1 , ๐‘–, 0, 3
๐ต๐‘’๐‘ง๐‘–๐‘’๐‘Ÿ = ๐ถ๐‘ข๐‘Ÿ๐‘ฃ๐‘Ž[๐‘ƒ_๐‘ฅ(๐‘ก), ๐‘ƒ_๐‘ฆ(๐‘ก), ๐‘ก, 0, 1]
(Ver archivo) Construccion_2_Bezieranalitica
3.- Construcción numérica.
(Ver archivo) Construccion_3_Beziernumerico
Nos basamos en la siguiente macro o herramienta que implementamos en la Hoja de Cálculo de GeoGebra.
2.- Curvas de Hermite.
Son del mismo tipo que las Curvas de Bézier para 4 puntos dados, A, B, C y D. Las condiciones de frontera quedan explicitadas por
las coordenadas del punto inicial y final de la sección, (A y B) y las coordenadas de los vectores situados sobre la semitangente en
esos mismos puntos, (C y D).
El primer vector indica la dirección de โ€œentradaโ€ de la sección y el otro, el de
la โ€œsalida de la curva.
Para el cálculo de una sección cualquiera i, vamos a emplear las siguientes
notaciones:
๐‘ƒ๐‘– 0 ๐‘ฆ ๐‘ƒ๐‘– 1 : ๐‘ ๐‘œ๐‘› ๐‘’๐‘™ ๐‘๐‘Ÿ๐‘–๐‘š๐‘’๐‘Ÿ ๐‘ฆ ๐‘ ๐‘’๐‘”๐‘ข๐‘›๐‘‘๐‘œ ๐‘๐‘ข๐‘›๐‘ก๐‘œ๐‘  ๐‘‘๐‘’ ๐‘™๐‘Ž ๐‘†๐‘’๐‘๐‘๐‘–ó๐‘› ๐ด ๐‘ฆ ๐ต
๐‘ƒโ€ฒ ๐‘– 0 ๐‘ฆ ๐‘ƒโ€ฒ ๐‘– 1 : son las coordenadas de los vectores de entrada y salida, sobre las semitangentes (๐‘ข = ๐ด๐ถ ๐‘ฆ ๐‘ฃ = ๐ต๐ท)
Para mayor claridad, emplearemos notación matricial:
๐‘Ž
๐‘
๐ป๐‘’๐‘Ÿ๐‘š๐‘–๐‘ก๐‘’๐‘– ๐‘ก = ๐‘ƒ๐‘– (๐‘ก) = ๐‘ฅ๐‘– ๐‘ก , ๐‘ฆ๐‘– ๐‘ก = ๐‘Ž๐‘ก 3 + ๐‘๐‘ก 2 + ๐‘๐‘ก + ๐‘‘ = ๐‘ก 3 ๐‘ก 2 ๐‘ก 1 . ๐‘
๐‘‘
๐‘Ž
๐‘
y para la derivada paramétrica, ๐ป๐‘’๐‘Ÿ๐‘š๐‘–๐‘ก๐‘’๐‘–โ€ฒ (๐‘ก) = ๐‘ƒโ€ฒ ๐‘– ๐‘ก = ๐‘ฅโ€ฒ๐‘– ๐‘ก , ๐‘ฆโ€ฒ๐‘– ๐‘ก = 3๐‘Ž๐‘ก 2 + 2๐‘๐‘ก + ๐‘ = 3๐‘ก 2 2๐‘ก 1 0 . ๐‘
๐‘‘
Que particularizadas en las fronteras de la sección i, es decir, para ๐‘ก = 0 y para ๐‘ก = 1 resultan:
๐‘ƒ๐‘– 0 = ๐‘‘
๐‘ƒ๐‘– 1 = ๐‘Ž + ๐‘ + ๐‘ + ๐‘‘
, que escritas en forma matricial quedarían
๐‘ƒ๐‘–โ€ฒ 0 = ๐‘
โ€ฒ
๐‘ƒ๐‘– 1 = 3๐‘Ž + 2๐‘ + ๐‘
๐‘ƒ๐‘– 0
๐‘ƒ๐‘– 1
๐‘ƒโ€ฒ ๐‘– 0
๐‘ƒโ€ฒ ๐‘– 1
=
๐‘Ž
0001
๐‘
1111
.
; ๐‘ƒ๐บ = ๐ด. ๐‘‹
๐‘
0010
๐‘‘
3210
Como la matriz de coeficientes A es regular, podemos resolver la ecuación matricial ๐‘ƒ๐บ = ๐ด. ๐‘‹ โ†’ ๐‘‹ = ๐ดโˆ’1 . ๐‘ƒ๐บ = ๐‘€๐ป . ๐‘ƒ๐บ
donde ๐‘€๐ป es la matriz de Hermite que caracteriza este tipo de curva.
๐ด=
0001
2
1111
โ†’ ๐‘€๐ป = ๐ดโˆ’1 = โˆ’3
0010
0
1
3210
๐‘Ž
2
๐‘
โˆ’3
=
๐‘
0
1
๐‘‘
โˆ’2 1
3 โˆ’2
0 1
0 0
โˆ’2 1
3 โˆ’2
0 1
0 0
1
โˆ’1
0
0
๐‘ƒ๐‘– 0
1
โˆ’1 . ๐‘ƒ๐‘– 1
๐‘ƒโ€ฒ ๐‘– 0
0
0
๐‘ƒโ€ฒ ๐‘– 1
Por tanto, ๐ป๐‘’๐‘Ÿ๐‘š๐‘–๐‘ก๐‘’๐‘– ๐‘ก = ๐‘ƒ๐‘– ๐‘ก = ๐‘ฅ๐‘– ๐‘ก , ๐‘ฆ๐‘– ๐‘ก
๐ป๐‘’๐‘Ÿ๐‘š๐‘–๐‘ก๐‘’๐‘– ๐‘ก = ๐‘ƒ๐‘– ๐‘ก = ๐‘ฅ๐‘– ๐‘ก , ๐‘ฆ๐‘– ๐‘ก
= ๐‘ก
3
๐‘ก
= ๐‘ก
2
๐‘ก
3
๐‘ก
2
๐‘ก
2
1 . โˆ’3
0
1
2
โˆ’3
1 .
0
1
โˆ’2 1
3 โˆ’2
0 1
0 0
โˆ’2 1
3 โˆ’2
0 1
0 0
๐‘ƒ๐‘– 0
1
โˆ’1 . ๐‘ƒ๐‘– 1
๐‘ƒโ€ฒ ๐‘– 0
0
0
๐‘ƒโ€ฒ ๐‘– 1
๐‘ƒ๐‘– 0
1
โˆ’1 . ๐‘ƒ๐‘– 1
๐‘ƒโ€ฒ ๐‘– 0
0
0
๐‘ƒโ€ฒ ๐‘– 1
๐‘ƒ๐‘– 0
๐‘ƒ๐‘– 1
๐ป๐‘’๐‘Ÿ๐‘š๐‘–๐‘ก๐‘’๐‘– ๐‘ก = ๐‘ƒ๐‘– ๐‘ก = 2๐‘ก 3 โˆ’ 3๐‘ก 2 + 1, โˆ’2๐‘ก 3 + 3๐‘ก 2 , ๐‘ก 3 โˆ’ 2๐‘ก 2 + ๐‘ก, ๐‘ก 3 โˆ’ ๐‘ก 2 .
๐‘ƒโ€ฒ ๐‘– 0
๐‘ƒโ€ฒ ๐‘– 1
Por fin, ๐ป๐‘’๐‘Ÿ๐‘š๐‘–๐‘ก๐‘’๐‘– ๐‘ก = ๐‘ƒ๐‘– ๐‘ก = 2๐‘ก 3 โˆ’ 3๐‘ก 2 + 1)๐‘ƒ๐‘– 0 + โˆ’2๐‘ก 3 + 3๐‘ก 2 ๐‘ƒ๐‘– 1 + ๐‘ก 3 โˆ’ 2๐‘ก 2 + ๐‘ก ๐‘ƒโ€ฒ ๐‘– 0 + (๐‘ก 3 โˆ’ ๐‘ก 2 ๐‘ƒโ€ฒ ๐‘– 1
1.- Construcción geométrica.
(Ver archivo) Construccion_1_Hermitegeometrica
2.- Construcción analítica.
Señalamos los 4 puntos ๐ด ๐‘–๐‘›๐‘–๐‘๐‘–๐‘Ž๐‘™ , ๐ต ๐‘“๐‘–๐‘›๐‘Ž๐‘™ , ๐ถ ๐‘ฆ ๐ท, de modo que los vectores que dan la semitangencia geométrica sean ๐ด๐ถ ๐‘ฆ ๐ต๐ท,
respectivamente.
Ahora podemos con GeoGebra, determinar las ecuaciones paramétricas de la Curva de Hermite.
๐‘ƒ๐‘ฅ ๐‘ก = 2๐‘ก 3 โˆ’ 3๐‘ก 2 + 1)๐‘ฅ(๐ด) + โˆ’2๐‘ก 3 + 3๐‘ก 2 ๐‘ฅ(๐ต) + ๐‘ก 3 โˆ’ 2๐‘ก 2 + ๐‘ก ๐‘ฅ(๐ถ โˆ’ ๐ด) + (๐‘ก 3 โˆ’ ๐‘ก 2 ๐‘ฅ(๐ท โˆ’ ๐ต)
๐‘ƒ๐‘ฆ ๐‘ก = 2๐‘ก 3 โˆ’ 3๐‘ก 2 + 1)๐‘ฆ(๐ด) + โˆ’2๐‘ก 3 + 3๐‘ก 2 ๐‘ฆ(๐ต) + ๐‘ก 3 โˆ’ 2๐‘ก 2 + ๐‘ก ๐‘ฆ(๐ถ โˆ’ ๐ด) + (๐‘ก 3 โˆ’ ๐‘ก 2 ๐‘ฆ(๐ท โˆ’ ๐ต)
๐ป๐‘’๐‘Ÿ๐‘š๐‘–๐‘ก๐‘’ = ๐ถ๐‘ข๐‘Ÿ๐‘ฃ๐‘Ž(๐‘ƒ๐‘ฅ ๐‘ก , ๐‘ƒ๐‘ฆ ๐‘ก , ๐‘ก, 0,1)
(Ver archivo) Construccion_2_Hermiteanalitica
3.- Relación entre ambas curvas, Bézier y
Hermite.
A partir de los vectores geométricos de entrada y de la definición paramétrica de cada curva, podemos obtener la relación que existe
entre ambas. Para ello basta comparar la definición analítica de cada una de ellas.
๐ป๐‘’๐‘Ÿ๐‘š๐‘–๐‘ก๐‘’๐‘– ๐‘ก = ๐‘ฅ๐‘– ๐‘ก , ๐‘ฆ๐‘– ๐‘ก
๐ต๐‘’๐‘ง๐‘–๐‘’๐‘Ÿ ๐‘ก = ๐‘ฅ๐‘– ๐‘ก , ๐‘ฆ๐‘– ๐‘ก
= ๐‘ก
= ๐‘ก
3
3
๐‘ก
๐‘ก
2
2
๐‘ก
๐‘ก
๐‘ƒ๐‘– 0
2 โˆ’2 1 1
๐‘ƒ๐‘– 1
โˆ’3
3
โˆ’2
โˆ’1
.
1 .
๐‘ƒโ€ฒ ๐‘– 0
0 0 1 0
1 0 0 0
๐‘ƒโ€ฒ ๐‘– 1
๐‘ƒ1
โˆ’1 3 โˆ’3 1
๐‘ƒ2
3
โˆ’6
3
0
.
1 .
๐‘ƒ3
โˆ’3 3 0 0
1 0 0 0
๐‘ƒ4
Si ambas curvas han de ser iguales, deberá suceder que
๐‘ƒ๐‘– 0
๐‘ƒ1
2 โˆ’2 1 1
โˆ’1 3 โˆ’3 1
๐‘ƒ2
โˆ’3 3 โˆ’2 โˆ’1 . ๐‘ƒ๐‘– 1
3
โˆ’6
3
0
=
.
โ†’
๐‘ƒ3
๐‘ƒโ€ฒ ๐‘– 0
0 0 1 0
โˆ’3 3 0 0
โ€ฒ
1 0 0 0
1
0
0
0
๐‘ƒ4
๐‘ƒ๐‘– 1
๐‘ƒ๐‘– 0
๐‘ƒ๐‘– 1
๐‘ƒโ€ฒ ๐‘– 0
๐‘ƒโ€ฒ ๐‘– 1
๐‘ƒ๐‘– 0
๐‘ƒ๐‘– 1
๐‘ƒโ€ฒ ๐‘– 0
๐‘ƒโ€ฒ ๐‘– 1
=
0
1
0
3
0
1
0
2
=
1
0
โˆ’3
0
0
1
1
1
๐‘ƒ๐‘– 0
๐‘ƒ๐‘– 1
๐‘ƒโ€ฒ ๐‘– 0
๐‘ƒโ€ฒ ๐‘– 1
=
2 โˆ’2 1 1
โˆ’3 3 โˆ’2 โˆ’1
0 0 1 0
1 0 0 0
โˆ’1
๐‘ƒ1
โˆ’1 3 โˆ’3 1
๐‘ƒ2
3
โˆ’6
3
0
.
.
๐‘ƒ3
โˆ’3 3 0 0
1 0 0 0
๐‘ƒ4
๐‘ƒ1
1
โˆ’1 3 โˆ’3 1
1 . 3 โˆ’6 3 0 . ๐‘ƒ2
๐‘ƒ3
0
โˆ’3 3 0 0
0
1 0 0 0
๐‘ƒ4
0 0
0 0
3 0
0 โˆ’3
๐‘ƒ1
0
1 . ๐‘ƒ2
๐‘ƒ3
0
3
๐‘ƒ4
Esta relación nos indica que los puntos de Hermite han de obtenerse a partir de los de Bézier en el siguiente orden:
๐ด = ๐‘–๐‘›๐‘–๐‘๐‘–๐‘œ = ๐‘ƒ1 = ๐‘ƒ๐‘Ÿ๐‘–๐‘š๐‘’๐‘Ÿ ๐‘ƒ๐‘ข๐‘›๐‘ก๐‘œ ๐‘‘๐‘’ ๐ต๐‘’๐‘ง๐‘–๐‘’๐‘Ÿ
๐ต = ๐‘“๐‘–๐‘›๐‘Ž๐‘™ = ๐‘ƒ4 = ๐‘ƒ๐‘ข๐‘›๐‘ก๐‘œ ๐น๐‘–๐‘›๐‘Ž๐‘™ ๐‘‘๐‘’ ๐ต๐‘’๐‘ง๐‘–๐‘’๐‘Ÿ
๐ถ; ๐ด๐ถ = 3. ๐‘ƒ1 ๐‘ƒ2
๐ท; ๐ต๐ท = 3. ๐‘ƒ3 ๐‘ƒ4
(Ver archivo) Construccion_1_Bezier_Hermite
4.-Splines. Introducción.
Los splines son una familia de curvas que nos van a permitir definir segmentos de curva con gran precisión y trazado muy suave. Son
de gran utilidad en aplicaciones para el diseño de superficies. Se 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, y dentro de esta familia se distinguen los splines no racionales y
uniformes, los splines no racionales y no uniformes y los splines racionales y no uniformes.
4.1 Splines Cúbicos Naturales.
(=Segunda Derivada Nula En Los Extremos De La Sección).
Este tipo de splines presenta continuidad C0, C1 y C2, por lo tanto su trazado es más suave que en el caso de las curvas
de Bézier o Hermite. Los splines cúbicos naturales se definen mediante una serie de puntos de control y polinomios cúbicos que
interpolan dichos puntos de control (el spline se dibuja sobre los puntos de control).
Si definimos un spline con n puntos de control, los coeficientes de los polinomios dependen de todos estos puntos.
Para su cálculo es necesario operar con matrices cuadradas de dimensión n + 1 siendo necesario invertirlas.
El programa GeoGebra tiene implementadas estas dos herramientas y construcciones. Veamos ahora cómo conseguirlo.
Se desea obtener el spline cúbico natural que interpole a los puntos dados A, B, C y D (NODOS)
๐‘Ž1 + ๐‘1 ๐‘ฅ + ๐‘1 ๐‘ฅ 2 + ๐‘‘1 ๐‘ฅ 3
๐‘†๐‘๐‘™๐‘–๐‘›๐‘’๐ถú๐‘๐‘–๐‘๐‘œ = ๐‘“ ๐‘ฅ = ๐‘Ž2 + ๐‘2 ๐‘ฅ + ๐‘2 ๐‘ฅ 2 + ๐‘‘2 ๐‘ฅ 3
๐‘Ž3 + ๐‘3 ๐‘ฅ + ๐‘3 ๐‘ฅ 2 + ๐‘‘3 ๐‘ฅ 3
1.
2.
3.
4.
5.
6.
7.
4 condiciones
๏‚ฎ Igualdad de la función
en los nodos interiores
2 condiciones
๏‚ฎ Igualdad de la función
en los nodos extremos
2 condiciones
๏‚ฎ Igualdad de la función
8. derivada primera en los
nodos interiores
9. 2 condiciones
๏‚ฎ Igualdad de la función
10. derivada segunda en los
nodos interiores
11. 2 condiciones
(SPLINES NATURALES)
๏‚ฎ Nulidad de la función
12. derivada segunda en los
nodos extremos
(Ver archivo) Construccion_ SplineCubicoNatural
๐‘Ž1 + ๐‘1 x
๐‘Ž2 + ๐‘2 x
๐‘Ž2 + ๐‘2 x
๐‘Ž3 + ๐‘3 x
๐‘Ž1 + ๐‘1 x
B
B
C
C
A
๐‘ฅ(๐ด) โ‰ค ๐‘ฅ โ‰ค ๐‘ฅ(๐ต)
๐‘ฅ(๐ต) โ‰ค ๐‘ฅ โ‰ค ๐‘ฅ(๐ถ)
๐‘ฅ(๐ถ) โ‰ค ๐‘ฅ โ‰ค ๐‘ฅ(๐ท)
+ ๐‘1 ๐‘ฅ
+ ๐‘2 ๐‘ฅ
+ ๐‘2 ๐‘ฅ
+ ๐‘3 ๐‘ฅ
+ ๐‘1 ๐‘ฅ
๐ต
๐ต
๐ถ
๐ถ
๐ด
2
+ ๐‘‘1 ๐‘ฅ
+ ๐‘‘2 ๐‘ฅ
2
+ ๐‘‘2 ๐‘ฅ
2
+ ๐‘‘3 ๐‘ฅ
2
+ ๐‘‘1 ๐‘ฅ
2
๐ต
๐ต
๐ถ
๐ถ
๐ด
3
=y B
=y B
3
=y C
3
=y C
2
= y(A)
3
๐‘Ž3 + ๐‘3 x D + ๐‘3 ๐‘ฅ ๐ท 2 + ๐‘‘3 ๐‘ฅ ๐ท 2 = y(D)
๐‘1 + 2๐‘1 x B + 3๐‘‘1 ๐‘ฅ ๐ต 2 โˆ’ ๐‘2 โˆ’ 2๐‘2 x B โˆ’ 3๐‘‘2 ๐‘ฅ ๐ต
๐‘2 + 2๐‘2 x C + 3๐‘‘2 ๐‘ฅ ๐ถ
2
โˆ’ ๐‘3 โˆ’ 2๐‘3 x C โˆ’ 3๐‘‘3 ๐‘ฅ ๐ถ
๐‘1 + 3๐‘‘1 x B โˆ’ ๐‘2 โˆ’ 3๐‘‘2 x B = 0
๐‘2 + 3๐‘‘2 x C โˆ’ ๐‘3 โˆ’ 3๐‘‘3 x C = 0
๐‘1 + 3๐‘‘1 x A = 0
๐‘3 + 3๐‘‘3 x D = 0
2
=0
2
=0
5.- B-Splines. Introducción.
Todo este desarrollo comenzó en 1950 por ingenieros que necesitaban la representación matemática precisa de superficies de forma
libre como las usadas en las carrocerías de automóviles, superficies de exteriores aeroespaciales y cascos de barcos, que pudieran
ser reproducidas exacta y técnicamente en cualquier momento.
Dado un conjunto de puntos ๐‘ƒ0 โ€ฆ , ๐‘ƒ๐‘› , obtenemos una curva de aproximación compuesta por varios tramos, y las ecuaciones de cada
tramo están influidas solamente por k vértices del polígono de control siendo este valor de k el orden de la B-Spline, un parámetro
elegido a voluntad por el diseñador y, lógicamente, ๐‘˜ โ‰ค ๐‘› + 1
Por otra parte, los algoritmos implicados son absolutamente rápidos y numéricamente estables y, por lo tanto, bastante satisf actorios
para los usos en tiempo real en una variedad de campos, tales como gráficos y animación por computadora, proceso
geométrico, inteligencia artificial y muchos otros.
Aunque hay una abundancia de algoritmos de gran alcance para B-Splines, se realizan generalmente de una manera
numérica. Sorprendentemente, a pesar de existir una amplia gama de potentes sistemas de álgebra computacional, ninguno de ellos
incluye
comandos
específicos
o rutinas
especializadas
para
tratar
con
B-Splines
simbólicamente.
Este trabajo está dirigido a llenar este vacío. En esta comunicación se describe cómo con el programa GeoGebra se puede calcular
funciones base B-Splines de una manera completamente simbólica. Puesto que estas funciones básicas están en el cimiento de casi
cualquier algoritmo para curvas y superficies B-Splines, su manipulación eficiente se anhela pues, como uno de los objetivos.
El programa GeoGebra permite también manipular funciones base B-Splines racionales.
5.1.- Preliminares. Definición de las funciones base B-Splines.
Los parámetros que intervienen en una curva B-Spline se enumeran a continuación:
๐‘ƒ0 , โ€ฆ , ๐‘ƒ๐‘› โ†’ ๐‘› + 1 Vértices o Puntos de Control.
๐‘๐‘–,๐‘˜ โ†’ Funciones B-Spline Básicas de orden k.
๐‘‘ โ†’ Grado de las B-Spline Básicas (elección usual, d=2 y 3)
๐‘˜ โ†’ Orden de la B-Spline: ๐‘˜ = ๐‘‘ + 1
Nº de tramos๏ƒ  n-d+1
Es necesario definir un vector de nodos para el cálculo de las funciones B-Spline básicas:
Sea ฯ„ = {u0 , u1 , u2 , โ€ฆ , un } una sucesión no decreciente de números reales llamados nodos.
A este vector ฯ„ se le llama vector nodo.
La i-ésima función base B-Spline ๐‘๐‘–,๐‘˜ (t) de orden k está definida por las relaciones recursivas
Ni,1 t =
Ni,k t =
1 ui โ‰ค t < ui+1
, i = 0,1, โ€ฆ , n โˆ’ 1 .
0 en otro caso
tโˆ’u i
u i+k โˆ’1 โˆ’u i
Ni,kโˆ’1 t +
u i+k โˆ’t
u i+k โˆ’u i+1
Ni+1,kโˆ’1 t
(I)
,k > 1
(๐ผ๐ผ)
Del modo en el que estén dispuestos estos nodos en la lista ฯ„ = {u0 , u1 , u2 , โ€ฆ , un } , dependerá el tipo de B-Spline a considerar.
Si son todos distintos y equidistantes, estaremos hablando de una B-Spline uniforme.
Si hay algunos nodos iguales, estaremos hablando de una B-Spline no uniforme. En este caso, convenimos que en los casos de
denominadores nulos, el término asociado a dicha fracción es nulo también.
Nótese que la i-ésima función base B-spline de orden 1, Ni,1 t es una función constante definida a trozos con valor 1 en el intervalo
[ui , ui+1 ), llamado el soporte de Ni,1 t , y cero en otro caso. Este soporte puede comprender un intervalo o reducirse a un punto, puesto
0
que los nodos ui y ui+1 no son necesariamente diferentes. De ser necesario se aplica la convención = 0 en la ecuación (II). El
0
número de veces que aparece un nodo en un vector nodo es llamado la multiplicidad del nodo y tiene un efecto importante en la forma
y propiedades de las funciones base asociadas. Cualquier función base de orden k>1 Ni,k t , es una combinación lineal de dos
funciones consecutivas de orden k-1, donde los coeficientes son polinomios lineales en t. Pues bien, para un conjunto de Puntos
P0 , P1 , โ€ฆ , Pn y un vector de nodos ฯ„ = {u0 , u1 , u2 , โ€ฆ , un } la curva B-Spline de orden k relativa a estos datos será C t = ni=0 Ni,k (t)Pi
5.2.- Construcción de las funciones base B-Splines y su Curva B-Spline correspondiente.
B-Spline no racional y uniforme (tiene todos los nodos distintos y están equidistantes entre sí)
Construcción de las funciones base B-Splines๏ƒ  (Ver archivo) Construccion_1_FuncionesBasicasBSplines
Para el vector nodo ฯ„ = {0,1,2,3,4,5,6,7} y el conjunto de puntos {A, B, C, D, E}, las funciones básicas y la curva de orden 3 (grado 2) se
determinarán así con GeoGebra:
B_basic orden 1 โ†’ N01 ๐‘ก = Si 0 โ‰ค t โ‰ค 1, 1,0
๐‘กโ€“ 0
B_basic orden 2 โ†’ N02 ๐‘ก =
N01(t) +
1โˆ’0
๐‘กโ€“ 0
B_basic orden 3 โ†’ N03 ๐‘ก =
N02(t) +
2โˆ’0
โ†’ Ni0 = N01 ๐‘ก โˆ’ ๐‘–
2 โˆ’ t
N01(t โˆ’ 1) โ†’ Ni2 ๐‘ก = N02 ๐‘ก โˆ’ ๐‘–
2โˆ’1
3 โˆ’ t
N02(t โˆ’ 1) โ†’ Ni3 ๐‘ก = N03 ๐‘ก โˆ’ ๐‘–
3โˆ’1
Y la curva B-Spline Cuadrática Uniforme será la siguiente:
๐ต๐‘†๐‘๐‘™๐‘–๐‘›๐‘’ = ๐ถ๐‘ข๐‘Ÿ๐‘ฃ๐‘Ž[๐‘ฅ(๐ด) ๐‘03(๐‘ก) + ๐‘ฅ(๐ต) ๐‘03(๐‘ก โˆ’ 1) + ๐‘ฅ(๐ถ) ๐‘03(๐‘ก โˆ’ 2) + ๐‘ฅ(๐ท) ๐‘03(๐‘ก โˆ’ 3) + ๐‘ฅ(๐ธ) ๐‘03(๐‘ก โˆ’ 4), ๐‘ฆ(๐ด) ๐‘03(๐‘ก)
+ ๐‘ฆ(๐ต) ๐‘03(๐‘ก โˆ’ 1) + ๐‘ฆ(๐ถ) ๐‘03(๐‘ก โˆ’ 2) + ๐‘ฆ(๐ท) ๐‘03(๐‘ก โˆ’ 3) + ๐‘ฆ(๐ธ) ๐‘03(๐‘ก โˆ’ 4), ๐‘ก, 2, 5]
(Ver archivo) Consstruccion_1_BSplineCuadraticoUniforme
๏‚ท
Para el vector nodo ฯ„ = {0,1,2,3,4,5,6,7,8} y el conjunto de puntos {A, B, C, D, E}, las funciones básicas y la curva de orden 4
(grado 3) se determinarán así con GeoGebra:
B_basic orden 1 โ†’ N01 ๐‘ก = Si 0 โ‰ค
๐‘กโ€“ 0
B_basic orden 2 โ†’ N02 ๐‘ก =
1โˆ’0
๐‘กโ€“ 0
B_basic orden 3 โ†’ N03 ๐‘ก =
2โˆ’0
๐‘กโ€“ 0
B_basic orden 4 โ†’ N04 ๐‘ก =
3โˆ’0
t โ‰ค 1, 1,0 โ†’ Ni0 = N01 ๐‘ก โˆ’ ๐‘–
2 โˆ’ t
N01(t) +
N01(t โˆ’ 1) โ†’ Ni2 ๐‘ก = N02 ๐‘ก โˆ’ ๐‘–
2โˆ’1
3 โˆ’ t
N02(t) +
N02(t โˆ’ 1) โ†’ Ni3 ๐‘ก = N03 ๐‘ก โˆ’ ๐‘–
3โˆ’1
4 โˆ’ t
N03(t) +
N03(t โˆ’ 1) โ†’ Ni4 ๐‘ก = N04 ๐‘ก โˆ’ ๐‘–
4โˆ’1
Y la curva B-Spline Cúbica Uniforme será la siguiente:
๐ต๐‘†๐‘๐‘™๐‘–๐‘›๐‘’ = ๐ถ๐‘ข๐‘Ÿ๐‘ฃ๐‘Ž[๐‘ฅ(๐ด) ๐‘04(๐‘ก) + ๐‘ฅ(๐ต) ๐‘04(๐‘ก โˆ’ 1) + ๐‘ฅ(๐ถ) ๐‘04(๐‘ก โˆ’ 2) + ๐‘ฅ(๐ท) ๐‘04(๐‘ก โˆ’ 3) + ๐‘ฅ(๐ธ) ๐‘04(๐‘ก โˆ’ 4), ๐‘ฆ(๐ด) ๐‘04(๐‘ก)
+ ๐‘ฆ(๐ต) ๐‘04(๐‘ก โˆ’ 1) + ๐‘ฆ(๐ถ) ๐‘04(๐‘ก โˆ’ 2) + ๐‘ฆ(๐ท) ๐‘04(๐‘ก โˆ’ 3) + ๐‘ฆ(๐ธ) ๐‘04(๐‘ก โˆ’ 4), ๐‘ก, 3, 5]
(Ver archivo) Construccion_1_BSplineCubicoUniforme
๐‘ก3
0โ‰ค๐‘ก<1
6
2
Si explicitamos las operaciones indicadas en las definiciones recursivas, obtenemos que N04 ๐‘ก =
โˆ’
2
โˆ’ 2๐‘ก + 2๐‘ก โˆ’
3
22
3
๐‘ก3
+ 10๐‘ก โˆ’ 4๐‘ก 2 +
โˆ’
1
6
0
โˆ’4 + ๐‘ก
3
1โ‰ค๐‘ก<2
2
๐‘ก3
2
2โ‰ค๐‘ก<3
3โ‰ค๐‘ก<4
en otro caso
De esta forma, podemos determinar la curva B-Spline usando la siguiente sintaxis:
๐‘04(๐‘ก) = ๐‘†๐‘–[0 โ‰ค ๐‘ก โ‰ค 1, ๐‘ก³ / 6, ๐‘†๐‘–[1 โ‰ค ๐‘ก โ‰ค 2, 2 / 3 โˆ’ 2๐‘ก + 2๐‘ก² โˆ’ ๐‘ก³ / 2, ๐‘†๐‘–[2 โ‰ค ๐‘ก โ‰ค 3, (โˆ’22) / 3 + 10๐‘ก โˆ’ 4๐‘ก² + ๐‘ก³ / 2, ๐‘†๐‘–[3 โ‰ค ๐‘ก
โ‰ค 4, (โˆ’1) / 6 (โˆ’4 + ๐‘ก)³, 0]]]]
๐ต๐‘†๐‘๐‘™๐‘–๐‘›๐‘’ = ๐ถ๐‘ข๐‘Ÿ๐‘ฃ๐‘Ž[๐‘ฅ(๐ด) ๐‘04(๐‘ก) + ๐‘ฅ(๐ต) ๐‘04(๐‘ก โˆ’ 1) + ๐‘ฅ(๐ถ) ๐‘04(๐‘ก โˆ’ 2) + ๐‘ฅ(๐ท) ๐‘04(๐‘ก โˆ’ 3) + ๐‘ฅ(๐ธ) ๐‘04(๐‘ก โˆ’ 4), ๐‘ฆ(๐ด) ๐‘04(๐‘ก)
+ ๐‘ฆ(๐ต) ๐‘04(๐‘ก โˆ’ 1) + ๐‘ฆ(๐ถ) ๐‘04(๐‘ก โˆ’ 2) + ๐‘ฆ(๐ท) ๐‘04(๐‘ก โˆ’ 3) + ๐‘ฆ(๐ธ) ๐‘04(๐‘ก โˆ’ 4), ๐‘ก, 3, 5]
(Ver archivo) Construccion_2_BSplineCubicoUniforme
Si consideramos el vector ฯ„ = {0,1,2,3,4,5,6,7,8,9} y los puntos {A, B, C, D = A, E = B, F = C} obtenemos una B-Spline cúbica cerrada.
(Ver archivo) Construccion_3_BSplineCubicoUniformeCerrada
B-Spline no racional y no uniforme (tiene algunos nodos iguales).
La principal diferencia entre este tipo de splines 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. 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 pueden almacenar un pequeño número de matrices correspondientes a la ecuación anterior y que cubran todas las
posibilidades de configuración de los nodos, eliminando la necesidad de reevaluar las funciones de mezcla para cada segmento.
Ejemplo: Para el vector nodo ฯ„ = {0,0,0,1,2,2,2}
Sea el conjunto de puntos {A, B, C, D}, obtengamos las funciones básicas y la curva de orden 3 (grado 2).
Para el conjunto de puntos {A, B, C}, obtengamos las funciones básicas y la curva de orden 4 (grado 3).
Para ello, en primer lugar se determinarán las funciones básicas utilizando el algoritmo recursivo dado en la definición.
ฯ„ = {0,0,0,1,2,2,2}
F básicas
orden 1
F básicas
orden 2
F básicas
orden 3
00
N01=0
00
N11=0
01
12
๐‘31 ๐‘ก = ๐‘†๐‘– 1 โ‰ค ๐‘ก โ‰ค 2,1,0
22
N41=0
000
N02=0
001
012
๐‘22 ๐‘ก = ๐‘ก ๐‘21 ๐‘ก + 2 โˆ’ ๐‘ก ๐‘31
122
๐‘32 ๐‘ก = ๐‘ก โˆ’ 1 ๐‘31 ๐‘ก
222
N42=0
0001
๐‘03 ๐‘ก = 1 โˆ’ ๐‘ก ๐‘12
0012
0122
2โˆ’๐‘ก
๐‘13 ๐‘ก = ๐‘ก ๐‘12 ๐‘ก +
๐‘22(๐‘ก)
2
๐‘23 ๐‘ก =
1222
๐‘33 ๐‘ก = ๐‘ก โˆ’ 1 ๐‘32(๐‘ก)
๐‘21 ๐‘ก = ๐‘†๐‘–[0 โ‰ค ๐‘ก โ‰ค 1,1,0]
๐‘12 ๐‘ก = 1 โˆ’ ๐‘ก ๐‘21 ๐‘ก
๐‘ก
๐‘22 ๐‘ก + 2 โˆ’ ๐‘ก ๐‘32(๐‘ก)
2
22
N51=0
(Ver archivo) Construccion_1_ BSplineCuadraticoNoUniforme
ฯ„ = {0,0,0,1,2,2,2}
F
básicas
orden 1
F
básicas
orden 2
F
básicas
orden 3
00
N01=0
00
N11=0
01
๐‘21 ๐‘ก = ๐‘†๐‘–[0 โ‰ค ๐‘ก โ‰ค 1,1,0]
๐‘31 ๐‘ก
= ๐‘†๐‘– 1 โ‰ค ๐‘ก โ‰ค 2,1,0
000
N02=0
001
012
๐‘22 ๐‘ก = ๐‘ก ๐‘21 ๐‘ก + 2 โˆ’ ๐‘ก ๐‘31
122
๐‘32 ๐‘ก = ๐‘ก โˆ’ 1 ๐‘31 ๐‘ก
0001
0012
๐‘13 ๐‘ก
1222
๐‘33 ๐‘ก = ๐‘ก โˆ’ 1 ๐‘32(๐‘ก)
F
básicas
orden 4
00012
๐‘04 ๐‘ก
0122
๐‘23 ๐‘ก
๐‘ก
= ๐‘22 ๐‘ก + 2 โˆ’ ๐‘ก ๐‘32(๐‘ก)
2
01222
๐‘24 ๐‘ก
๐‘ก
= ๐‘23 ๐‘ก + 2 โˆ’ ๐‘ก ๐‘33(๐‘ก)
2
๐‘12 ๐‘ก = 1 โˆ’ ๐‘ก ๐‘21 ๐‘ก
๐‘03 ๐‘ก = 1 โˆ’ ๐‘ก ๐‘12
= ๐‘ก ๐‘12 ๐‘ก +
= ๐‘ก ๐‘03 ๐‘ก +
2โˆ’๐‘ก
๐‘13(๐‘ก)
2
2โˆ’๐‘ก
๐‘22(๐‘ก)
2
00122
๐‘14 ๐‘ก
๐‘ก
2โˆ’๐‘ก
= ๐‘13 ๐‘ก +
๐‘23(๐‘ก)
2
2
12
22
N41=0
22
N51=0
222
N42=0
(Ver archivo) Construccion_2_BSplineCubicoNoUniforme
ฯ„ = {0,0,0,1,1,2,2,2}
F
básicas
orden 1
00
N01=0
00
N11=0
01
๐‘21 ๐‘ก = ๐‘†๐‘–[0 โ‰ค ๐‘ก
โ‰ค 1,1,0]
11
N31=0
F
básicas
orden 2
F
básicas
orden 3
000
N02=0
011
๐‘22 ๐‘ก = ๐‘ก ๐‘21(๐‘ก)
F
básicas
orden 4
00011
๐‘04 ๐‘ก
= ๐‘ก ๐‘03 ๐‘ก
+ 1 โˆ’ ๐‘ก ๐‘13(๐‘ก)
001
๐‘12 ๐‘ก
= 1 โˆ’ ๐‘ก ๐‘21(๐‘ก)
0011
๐‘13 ๐‘ก
= ๐‘ก ๐‘12 ๐‘ก
+ 1 โˆ’ ๐‘ก ๐‘22(๐‘ก)
00112
๐‘14 ๐‘ก
= ๐‘ก ๐‘13 ๐‘ก
2โˆ’๐‘ก
+
๐‘23(๐‘ก)
2
112
๐‘32 ๐‘ก
= 2โˆ’๐‘ก
1122
๐‘33 ๐‘ก
= ๐‘กโˆ’1
+ 2โˆ’๐‘ก
11222
๐‘34 ๐‘ก
= ๐‘กโˆ’1
+ 2โˆ’๐‘ก
0001
๐‘03 ๐‘ก
= 1 โˆ’ ๐‘ก ๐‘12(๐‘ก)
0112
๐‘23 ๐‘ก
= ๐‘ก ๐‘22 ๐‘ก
+ 2 โˆ’ ๐‘ก ๐‘32(๐‘ก)
01122
๐‘24 ๐‘ก
๐‘ก
= ๐‘23 ๐‘ก
2
+ 2 โˆ’ ๐‘ก ๐‘33(๐‘ก)
12
๐‘41(๐‘ก)
๐‘32 ๐‘ก
๐‘42(๐‘ก)
๐‘41 ๐‘ก
= ๐‘†๐‘– 2 โ‰ค ๐‘ก
โ‰ค 2,1,0
122
๐‘42 ๐‘ก
= ๐‘ก โˆ’ 1 ๐‘41(๐‘ก)
1222
๐‘43 ๐‘ก
= ๐‘ก โˆ’ 1 ๐‘42 ๐‘ก
22
N51=0
22
N61=0
222
N52=0
๐‘33 ๐‘ก
๐‘43(๐‘ก)
(Ver archivo) Construccion_3_BSplineCubicoNoUniforme
Curva de Bézier es una Curva B-Spline de nodos no uniformes.
ฯ„ = {0,0,0,0,1,1,1,1}
F
básicas
orden 1
F
básicas
orden 2
F
básicas
orden 3
00
N01=0
00
N11=0
00
000
N02=0
000
0000
๐‘03 ๐‘ก = 0
0001
๐‘13 ๐‘ก = (1 โˆ’ ๐‘ก) ๐‘22 ๐‘ก
F
básicas
orden 4
00001
๐‘04 ๐‘ก
= 1 โˆ’ ๐‘ก ๐‘13(๐‘ก)
๐‘21 ๐‘ก = 0
๐‘12 ๐‘ก = 0
00011
๐‘14 ๐‘ก
= ๐‘ก ๐‘13 ๐‘ก + (1
โˆ’ ๐‘ก)๐‘23(๐‘ก)
001
๐‘22 ๐‘ก = (1 โˆ’ ๐‘ก) ๐‘31(๐‘ก)
0011
๐‘23 ๐‘ก
= ๐‘ก ๐‘22
+ 1โˆ’๐‘ก
00111
๐‘24 ๐‘ก
= ๐‘ก ๐‘23
+ 1โˆ’๐‘ก
01
๐‘31 ๐‘ก
= ๐‘†๐‘– 0 โ‰ค ๐‘ก โ‰ค 1,1,0
011
๐‘32 ๐‘ก = ๐‘ก ๐‘31 ๐‘ก
0111
๐‘33 ๐‘ก = ๐‘ก ๐‘32 ๐‘ก
๐‘ก
๐‘32(๐‘ก)
01111
๐‘34 ๐‘ก = ๐‘ก ๐‘33 ๐‘ก
๐‘ก
๐‘33(๐‘ก)
11
๐‘41 ๐‘ก
=0
111
๐‘42 ๐‘ก
=0
1111
๐‘43 ๐‘ก
=0
11
N51=0
111
N52=0
11
N61=0