com09

download com09

of 8

description

geogebra

Transcript of com09

  • III ENCUENTRO GEOGEBRA

    COM9. Curvas Paramtricas, Curvas de Bzier, Splines y B-Splines con GeoGebra. F. Damin Aranda Ballesteros

    [email protected]

    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 + 32 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 , , 0, 3

    = 3, 1 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 + = 32 2 1 0 .

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

    0 =

    1 = + + +

    0 =

    1 = 3 + 2 +

    , que escritas en forma matricial quedaran

    0

    1

    0

    1

    =

    0 0 0 11 1 1 10 0 1 03 2 1 0

    .

    ; = .

    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.

    =

    0 0 0 11 1 1 10 0 1 03 2 1 0

    = 1 =

    2 2 1 13 3 2 1

    0 0 1 01 0 0 0

    =

    2 2 1 13 3 2 1

    0 0 1 01 0 0 0

    .

    0

    1

    0

    1

    Por tanto, = = , = 3 2 1 .

    2 2 1 13 3 2 1

    0 0 1 01 0 0 0

    .

    0

    1

    0

    1

    = = , = 3 2 1 .

    2 2 1 13 3 2 1

    0 0 1 01 0 0 0

    .

    0

    1

    0

    1

    = = 23 32 + 1,23 + 32, 3 22 + , 3 2 .

    0

    1

    0

    1

    Por fin, = = 23 32 + 1) 0 + 2

    3 + 32 1 + 3 22 + 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.

    = 23 32 + 1)() + 23 + 32 () + 3 22 + ( ) + (3 2 ( )

    = 23 32 + 1)() + 23 + 32 () + 3 22 + ( ) + (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.

    = , = 3 2 1 .

    2301

    2300

    1210

    1100

    .

    0

    1

    0

    1

    = , = 3 2 1 .

    1331

    3630

    3300

    1000

    .

    1234

    Si ambas curvas han de ser iguales, deber suceder que

    2301

    2300

    1210

    1100

    .

    0

    1

    0

    1

    =

    1331

    3630

    3300

    1000

    .

    1234

    0

    1

    0

    1

    =

    2301

    2300

    1210

    1100

    1

    .

    1331

    3630

    3300

    1000

    .

    1234

    0

    1

    0

    1

    =

    0103

    0102

    0111

    1100

    .

    1331

    3630

    3300

    1000

    .

    1234

    0

    1

    0

    1

    =

    1030

    0030

    0003

    0103

    .

    1234

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

    ; = 3.34

    (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 + 12 + 1

    3

    2 + 2 + 22 + 2

    3

    3 + 3 + 32 + 3

    3

    () ()() ()() ()

    1. 4 condiciones Igualdad de la funcin en los nodos interiores

    1 + 1x B + 1 2 + 1

    3 = y B

    2. 2 + 2x B + 2 2 + 2

    3 = y B

    3. 2 + 2x C + 2 2 + 2

    3 = y C

    4. 3 + 3x C + 3 2 + 3

    3 = y C

    5. 2 condiciones Igualdad de la funcin en los nodos extremos

    1 + 1x A + 1 2 + 1

    2 = y(A)

    6. 3 + 3x D + 3 2 + 3

    2 = y(D)

    7. 2 condiciones Igualdad de la funcin derivada primera en los

    nodos interiores

    1 + 21x B + 31 2 2 22x B 32

    2 = 0

    8. 2 + 22x C + 32 2 3 23x C 33

    2 = 0

    9. 2 condiciones Igualdad de la funcin derivada segunda en los

    nodos interiores

    1 + 31x B 2 32x B = 0

    10. 2 + 32x C 3 33x C = 0

    11. 2 condiciones (SPLINES NATURALES)

    Nulidad de la funcin derivada segunda en los

    nodos extremos

    1 + 31x A = 0

    12. 3 + 33x D = 0

    (Ver archivo) Construccion_ SplineCubicoNatural

  • 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 satisfactorios 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 = 1 ui t < ui+10 en otro caso

    , i = 0,1, , n 1 . (I)

    Ni,k t =tui

    ui+k1uiNi,k1 t +

    ui+kt

    ui+kui+1Ni+1,k1 t , 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

    que los nodos ui y ui+1 no son necesariamente diferentes. De ser necesario se aplica la convencin 0

    0= 0 en la ecuacin (II). El

    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,k(t)Pini=0

  • 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 Ni0 = N01

    B_basic orden 2 N02 = 0

    1 0 N01(t) +

    2 t

    2 1N01(t 1) Ni2 = N02

    B_basic orden 3 N03 = 0

    2 0 N02(t) +

    3 t

    3 1N02(t 1) Ni3 = N03

    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 t 1, 1,0 Ni0 = N01

    B_basic orden 2 N02 = 0

    1 0 N01(t) +

    2 t

    2 1N01(t 1) Ni2 = N02

    B_basic orden 3 N03 = 0

    2 0 N02(t) +

    3 t

    3 1N02(t 1) Ni3 = N03

    B_basic orden 4 N04 = 0

    3 0 N03(t) +

    4 t

    4 1N03(t 1) Ni4 = N04

    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

    Si explicitamos las operaciones indicadas en las definiciones recursivas, obtenemos que N04 =

    3

    60 < 1

    2

    3 2 + 22

    3

    21 < 2

    22

    3+ 10 42 +

    3

    22 < 3

    1

    6 4 + 3 3 < 4

    0 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

    00 N01=0

    00 N11=0

    01 21 = [0 1,1,0]

    12 31 = 1 2,1,0

    22 N41=0

    22 N51=0

    F bsicas orden 2

    000 N02=0

    001

    12 = 1 21 012

    22 = 21 + 2 31 122

    32 = 1 31 222 N42=0

    F bsicas orden 3

    0001 03 = 1 12

    0012

    13 = 12 +2

    222()

    0122

    23 =

    222 + 2 32()

    1222 33 = 1 32()

    (Ver archivo) Construccion_1_ BSplineCuadraticoNoUniforme

    = {0,0,0,1,2,2,2} F bsicas orden 1

    00 N01=0

    00 N11=0

    01 21 = [0 1,1,0]

    12 31 = 1 2,1,0

    22 N41=0

    22 N51=0

    F bsicas orden 2

    000 N02=0

    001 12 = 1 21

    012 22 = 21 + 2 31

    122 32 = 1 31

    222 N42=0

    F bsicas orden 3

    0001 03 = 1 12

    0012 13

    = 12 +2

    222()

    0122 23

    =

    222 + 2 32()

    1222 33 = 1 32()

    F bsicas orden 4

    00012 04

    = 03 +2

    213()

    00122 14

    =

    2 13 +

    2

    223()

    01222 24

    =

    2 23 + 2 33()

    (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

    12

    41 = 2 2,1,0

    22 N51=0

    22 N61=0

    F bsicas orden 2

    000 N02=0

    001 12 = 1 21()

    011 22 = 21()

    112 32 = 2 41()

    122 42 = 1 41()

    222 N52=0

    F bsicas orden 3

    0001 03 = 1 12()

    0011 13 = 12 + 1 22()

    0112 23 = 22 + 2 32()

    1122 33 = 1 32 + 2 42()

    1222 43 = 1 42

    F bsicas orden 4

    00011

    04 = 03 + 1 13()

    00112

    14 = 13

    + 2

    223()

    01122

    24

    =

    2 23

    + 2 33()

    11222

    34 = 1 33 + 2 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

    00 N01=0

    00 N11=0

    00 21 = 0

    01 31 = 0 1,1,0

    11 41 = 0

    11 N51=0

    11 N61=0

    F bsicas orden 2

    000 N02=0

    000

    12 = 0 001

    22 = (1 ) 31() 011

    32 = 31 111

    42 = 0

    111 N52=0

    F bsicas orden 3

    0000

    03 = 0 0001

    13 = (1 ) 22 0011

    23 = 22 + 1 32()

    0111

    33 = 32 1111

    43 = 0

    F bsicas orden 4

    00001

    04 = 1 13()

    00011

    14 = 13 + (1 )23()

    00111

    24 = 23 + 1 33()

    01111

    34 = 33