Está en la página 1de 8

III ENCUENTRO GEOGEBRA

COM9. Curvas Paramtricas, Curvas de Bzier, Splines y B-Splines con GeoGebra.


F. Damin Aranda Ballesteros
fdamianab@gmail.com

En aplicaciones de diseo, 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 sern usados por GeoGebra para formar ecuaciones
paramtricas polinmicas y dibujar la curva definida. Cuando la curva desplegada pasa a travs 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 tcnicas para determinar ecuaciones paramtricas polinmicas de curvas y superficies, dada las coordenadas de los
puntos de control. Entre los mtodos bsicos para representar curvas especificas con puntos de control, se incluyen las formulaciones
de las curvas de Bzier, de Hermite y las curvas B-Spline.

Curva de Bzier

Curva de Hermite

B-Spline cbica

1.- Curvas de Bzier.


Pierre Bzier, ingeniero francs desarroll este mtodo de aproximacin para utilizarlo en el diseo de carroceras de
los automviles Renault. Las curvas de Bzier tienen varias propiedades que hacen que sean muy tiles y convenientes para el diseo
de curvas y superficies. Asimismo, es fcil implementarla en cualquier programa de Clculo Simblico. Tambin lo es en GeoGebra.
Por esos motivos las curvas de Bzier estn disponibles en forma comn en varios sistemas de CAD, en paquetes generales
de grficas y en paquetes seleccionados de dibujo y pintura.
Curvas de Bzier.
En general, es posible ajustar una curva de Bzier para cualquier nmero de puntos de control. El nmero de puntos de control que se
debe aproximar y su posicin relativa determina el grado de polinomio de Bzier. Veamos su construccin con mayor detalle:
1.- Construccin geomtrica.
(Ver archivo) Construccion_1_Beziergeometrica
2.- Construccin analtica.

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 paramtrica,

: (1 ) . Obsrvese 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 construccin con GeoGebra ser as.
A partir de los puntos dados, A, B, C, D, creamos dos listas
1 = 2 = .Copiamos en la lnea de entrada:
= 3, 1

= 3, 1

1 , + 1 , , 0, 3

2 , + 1 , , 0, 3

= [_(), _(), , 0, 1]

(Ver archivo) Construccion_2_Bezieranalitica


3.- Construccin numrica.
(Ver archivo) Construccion_3_Beziernumerico
Nos basamos en la siguiente macro o herramienta que implementamos en la Hoja de Clculo de GeoGebra.

2.- Curvas de Hermite.


Son del mismo tipo que las Curvas de Bzier 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 seccin, (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 direccin de entrada de la seccin y el otro, el de


la salida de la curva.

Para el clculo de una seccin 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 notacin matricial:

= () = , = 3 + 2 + + = 3 2 1 .

y para la derivada paramtrica, () = = , = 3 2 + 2 + = 3 2 2 1 0 .

Que particularizadas en las fronteras de la seccin i, es decir, para = 0 y para = 1 resultan:


0 =
1 = + + +
, que escritas en forma matricial quedaran
0 =

1 = 3 + 2 +

0
1
0
1

0001

1111
.
; = .

0010

3210

Como la matriz de coeficientes A es regular, podemos resolver la ecuacin matricial = . = 1 . = .


donde es la matriz de Hermite que caracteriza este tipo de curva.

0001
2
1111
= 1 = 3
0010
0
1
3210

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, = = ,

= = ,

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.- Construccin geomtrica.


(Ver archivo) Construccion_1_Hermitegeometrica
2.- Construccin analtica.
Sealamos los 4 puntos , , , de modo que los vectores que dan la semitangencia geomtrica sean ,
respectivamente.
Ahora podemos con GeoGebra, determinar las ecuaciones paramtricas 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.- Relacin entre ambas curvas, Bzier y


Hermite.
A partir de los vectores geomtricos de entrada y de la definicin paramtrica de cada curva, podemos obtener la relacin que existe
entre ambas. Para ello basta comparar la definicin analtica de cada una de ellas.

= ,

= ,

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 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 relacin nos indica que los puntos de Hermite han de obtenerse a partir de los de Bzier en el siguiente orden:
= = 1 =
= = 4 =
; = 3. 1 2
; = 3. 3 4
(Ver archivo) Construccion_1_Bezier_Hermite

4.-Splines. Introduccin.
Los splines son una familia de curvas que nos van a permitir definir segmentos de curva con gran precisin y trazado muy suave. Son
de gran utilidad en aplicaciones para el diseo de superficies. Se distinguen varios tipos de Splines.
El primer tipo son los splines cbicos naturales, que se corresponden con la representacin matemtica de la definicin de spline.
Tambin 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 Cbicos Naturales.

(=Segunda Derivada Nula En Los Extremos De La Seccin).

Este tipo de splines presenta continuidad C0, C1 y C2, por lo tanto su trazado es ms suave que en el caso de las curvas
de Bzier o Hermite. Los splines cbicos naturales se definen mediante una serie de puntos de control y polinomios cbicos 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 clculo es necesario operar con matrices cuadradas de dimensin n + 1 siendo necesario invertirlas.
El programa GeoGebra tiene implementadas estas dos herramientas y construcciones. Veamos ahora cmo conseguirlo.
Se desea obtener el spline cbico 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 funcin
en los nodos interiores
2 condiciones
Igualdad de la funcin
en los nodos extremos

2 condiciones
Igualdad de la funcin
8. derivada primera en los
nodos interiores
9. 2 condiciones
Igualdad de la funcin
10. derivada segunda en los
nodos interiores
11. 2 condiciones
(SPLINES NATURALES)
Nulidad de la funcin
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

+ 1
+ 2
2
+ 2
2
+ 3
2
+ 1
2

=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 + 21 x B + 31 2 2 22 x B 32
2 + 22 x C + 32

3 23 x C 33

1 + 31 x B 2 32 x B = 0
2 + 32 x C 3 33 x C = 0
1 + 31 x A = 0

3 + 33 x D = 0

=0

=0

5.- B-Splines. Introduccin.


Todo este desarrollo comenz en 1950 por ingenieros que necesitaban la representacin matemtica precisa de superficies de forma
libre como las usadas en las carroceras de automviles, superficies de exteriores aeroespaciales y cascos de barcos, que pudieran
ser reproducidas exacta y tcnicamente en cualquier momento.
Dado un conjunto de puntos 0 , , obtenemos una curva de aproximacin compuesta por varios tramos, y las ecuaciones de cada
tramo estn influidas solamente por k vrtices del polgono de control siendo este valor de k el orden de la B-Spline, un parmetro
elegido a voluntad por el diseador y, lgicamente, + 1
Por otra parte, los algoritmos implicados son absolutamente rpidos y numricamente estables y, por lo tanto, bastante satisf actorios
para los usos en tiempo real en una variedad de campos, tales como grficos y animacin por computadora, proceso
geomtrico, inteligencia artificial y muchos otros.
Aunque hay una abundancia de algoritmos de gran alcance para B-Splines, se realizan generalmente de una manera
numrica. Sorprendentemente, a pesar de existir una amplia gama de potentes sistemas de lgebra computacional, ninguno de ellos
incluye
comandos
especficos
o rutinas
especializadas
para
tratar
con
B-Splines
simblicamente.
Este trabajo est dirigido a llenar este vaco. En esta comunicacin se describe cmo con el programa GeoGebra se puede calcular
funciones base B-Splines de una manera completamente simblica. Puesto que estas funciones bsicas estn en el cimiento de casi
cualquier algoritmo para curvas y superficies B-Splines, su manipulacin eficiente se anhela pues, como uno de los objetivos.
El programa GeoGebra permite tambin manipular funciones base B-Splines racionales.

5.1.- Preliminares. Definicin de las funciones base B-Splines.


Los parmetros que intervienen en una curva B-Spline se enumeran a continuacin:
0 , , + 1 Vrtices o Puntos de Control.
, Funciones B-Spline Bsicas de orden k.
Grado de las B-Spline Bsicas (eleccin 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 clculo de las funciones B-Spline bsicas:
Sea = {u0 , u1 , u2 , , un } una sucesin no decreciente de nmeros reales llamados nodos.
A este vector se le llama vector nodo.
La i-sima funcin 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
tu i
u i+k 1 u i

Ni,k1 t +

u i+k t
u i+k u i+1

Ni+1,k1 t

(I)
,k > 1

()

Del modo en el que estn 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 trmino asociado a dicha fraccin es nulo tambin.
Ntese que la i-sima funcin base B-spline de orden 1, Ni,1 t es una funcin 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 convencin = 0 en la ecuacin (II). El
0

nmero 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 funcin base de orden k>1 Ni,k t , es una combinacin 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.- Construccin de las funciones base B-Splines y su Curva B-Spline correspondiente.

B-Spline no racional y uniforme (tiene todos los nodos distintos y estn equidistantes entre s)
Construccin 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 bsicas y la curva de orden 3 (grado 2) se
determinarn as con GeoGebra:

B_basic orden 1 N01 = Si 0 t 1, 1,0


0
B_basic orden 2 N02 =
N01(t) +
10
0
B_basic orden 3 N03 =
N02(t) +
20

Ni0 = N01
2 t
N01(t 1) Ni2 = N02
21
3 t
N02(t 1) Ni3 = N03
31

Y la curva B-Spline Cuadrtica 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 bsicas y la curva de orden 4
(grado 3) se determinarn as con GeoGebra:
B_basic orden 1 N01 = Si 0
0
B_basic orden 2 N02 =
10
0
B_basic orden 3 N03 =
20
0
B_basic orden 4 N04 =
30

t 1, 1,0 Ni0 = N01


2 t
N01(t) +
N01(t 1) Ni2 = N02
21
3 t
N02(t) +
N02(t 1) Ni3 = N03
31
4 t
N03(t) +
N03(t 1) Ni4 = N04
41

Y la curva B-Spline Cbica 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

3
22
3

+ 10 4 2 +

1
6

4 +

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 cbica 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 estn 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 computacin 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 pequeo nmero de matrices correspondientes a la ecuacin anterior y que cubran todas las
posibilidades de configuracin 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 bsicas y la curva de orden 3 (grado 2).
Para el conjunto de puntos {A, B, C}, obtengamos las funciones bsicas y la curva de orden 4 (grado 3).
Para ello, en primer lugar se determinarn las funciones bsicas utilizando el algoritmo recursivo dado en la definicin.
= {0,0,0,1,2,2,2}
F bsicas
orden 1
F bsicas
orden 2
F bsicas
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
bsicas
orden 1
F
bsicas
orden 2
F
bsicas
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
bsicas
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
bsicas
orden 1

00
N01=0

00
N11=0

01
21 = [0
1,1,0]

11
N31=0

F
bsicas
orden 2
F
bsicas
orden 3

000
N02=0

011
22 = 21()

F
bsicas
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 Bzier es una Curva B-Spline de nodos no uniformes.
= {0,0,0,0,1,1,1,1}
F
bsicas
orden 1
F
bsicas
orden 2
F
bsicas
orden 3

00
N01=0

00
N11=0

00

000
N02=0

000

0000
03 = 0

0001
13 = (1 ) 22

F
bsicas
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

También podría gustarte