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
© Copyright 2024