Spline
•Curvas de Bézier
•Curvas de Hermite
•Catmull-Rom
Spline
El término "spline" hace referencia a una amplia clase de funciones que
son utilizadas en aplicaciones que requieren la interpolación de datos,
o un suavizado de curvas. Los splines son utilizados para trabajar tanto
en una como en varias dimensiones. Las funciones para la interpolación
por splines normalmente se determinan como minimizadores de la
aspereza sometidas a una serie de restricciones.
Curvas de Bézier
Se denomina curvas de Bézier a un sistema desarrollado en los años 1960 para
el trazado suave de dibujos técnicos, en el diseño aeronáutico y de automóviles.
Pierre Bézier, quien ideó un método de descripción matemática de las curvas que
se comenzó a utilizar con éxito en los programas de graficación por
computadora.
Curva líneal de Bezier
Dados los puntos P0 y P1, una curva lineal de Bézier es una línea recta entre los
dos puntos. La curva viene dada por la expresión:
Cuadrática de Bézier
Una curva cuadrática de Bézier es el camino trazado por la función B(t), dados los
puntos: P0, P1, y P2,
B(0)x = (3)(2)(1-0)2(0)1+ (3)(4)(1-0)3-2(0)2+ (1)(5)(1-0)3-3(0)3
Cubica de Bezier
Cuatro puntos del plano o del espacio tridimensional, P0, P1, P2 y P3 definen una curva
cúbica de Bézier. La curva comienza en el punto P0 y se dirige hacia P1 y llega a P3 viniendo
de la dirección del punto P2. Usualmente, no pasará ni por P1 ni por P2. Estos puntos solo
están ahí para proporcionar información direccional. La distancia entre P0 y P1 determina
"qué longitud" tiene la curva cuando se mueve hacia la dirección de P2 antes de dirigirse
hacia P3.
Generalización
La generalización pasaría a ser las curvas denominas "Spline", es decir la curva de
Bézier es un Spline de tercer grado. La curva de Bézier de grado puede ser
generalizada de la siguiente manera. Dados los puntos P0, P1,..., Pn, la curva de
Bézier es del tipo:
Ejemplo
Genere los puntos para la curva formada por los puntos de control:
P0(1,1), P1(2,4), P2(4,8) y P3(5,2)
Son 4 puntos por lo que n=3, es la cantidad de puntos menos uno.
3 3 3 3
B(t) = P0(1-t)3-0t0+ P1(1-t)3-1t1+ P2(1-t)3-2t2+ P3(1-t)3-3t3
0 1 2 3
3 3 3 3
B(t) = P0(1-t)3-0t0+ P1(1-t)3-1t1+ P2(1-t)3-2t2+ P3(1-t)3-3t3
0 1 2 3
t x y
0
0.1
0.2
0.3
0.4
0.5
0.6
Creamos una tabla donde el parámetro que va de 0 a 1 en los intervalos que se desee, para el ejemplo escogimos 0.1
como el paso del incremento.
Calculemos para el primer punto cuando t = 0 para x
3 3 3 3
B(0)x = P0x(1-0)3-0(0)0+ P1(1-0)3-1(0)1+ P2(1-0)3-2(0)2+ P3(1-0)3-3(0)3
0 1 2 3
En el paso de arriba sustituimos el valor de t en la expresión, ahora sustituiremos el valor de los puntos,
específicamente el valor de x de ellos.
3 3 3 3
B(0)x = (1)(1-0)3-0(0)0+ (2)(1-0)3-1(0)1+ (4)(1-0)3-2(0)2+ (5)(1-0)3-3(0)3
0 1 2 3
Pero que es esto? Es el calculo de las combinaciones
3 3! 3 3!
= = 1 = = 3
0 (3-0)!0! 2 (3-2)!2!
3 3! 3 3!
= = 3 = = 1
1 (3-1)!1! 3 (3-3)!3!
Ya con esto se calculan los coeficientes de cada termino y obtenga el valor de los puntos
3 3 3 3
B(0)x = (1)(1-0)3-0(0)0+ (2)(1-0)3-1(0)1+ (4)(1-0)3-2(0)2+ (5)(1-0)3-3(0)3
0 1 2 3
Sustituyendo coeficientes
B(0)x = (1)(1)(1-0)3-0(0)0+ (3)(2)(1-0)3-1(0)1+ (3)(4)(1-0)3-2(0)2+ (1)(5)(1-0)3-3(0)3
B(0)x = 1
De aquí en delante se van cambiando solo los valores de t, para las “x” y las “y”.
Ejemplo resuelto para comprobar resultados
• Genere los puntos para la curva formada por los puntos de control:
P0(2,4), P1(3,7) y P2(5,10).
t x y
0 2 4
0.2 2.44 5.2
B(0)x = (1-0)2(2)+ (2)(0) (1-0) (3)+ (0)2(5)
0.4 2.96 6.4
B(0)y = (1-0)2(4)+ (2)(0) (1-0) (7)+ (0)2(10) 0.6 3.56 7.6
Hacer para cada uno
0.8 4.24 8.8
1 5 10
Curvas de Hermite
El francés Charles Hermite generó un sistema para deformar trayectos
rectos entre dos puntos a través de polinomios. Las curvas se hacen a
través de interpolaciones que son controladas por una variable de
segmentación “t” que va de 0 a 1, la forma de la curva esta definida
además por dos tensores “T” que definen con su dirección (ya que son
una tangente) y su valor.
A diferencia que las curvas de Bezier, en el método de Hermite si se
tocan los puntos de control. Además el polinomio es diferente para
cada par de puntos pero no cambia de grado con la cantidad de puntos.
La expresión de Hermite se define como:
H(t) = (2t3-3t2+1)P0 + (-2t3+3t2)P1 + (t3-2t2+t)T0 + (t3-t2)T1
t x y
0
.15
.30
.45
.60
.75
1
Si tenemos este caso:
Grafique la curva dada por los puntos P0(1,2), P1(3,6), P2(5,1) y los tensores T0(2,2),
T1(5,0), T2(4,-1).
Para el primer par se utiliza P0 y P1 con T0 y T1, para el siguiente para se utiliza P0=P1
y P1=P2, también T0=T1 y T1=T2.
H(t) = (2t3-3t2+1)P0 + (-2t3+3t2)P1 + (t3-2t2+t)T0 + (t3-t2)T1
Tabla 1
H(0)x = (2(0)3-3(0)2+1)1 + (-2(0)3+3(0)2)3 + (03-2(0)2+(0))2 + ((0)3-(0)2)5= 1
H(0)y = (2(0)3-3(0)2+1)2 + (-2(0)3+3(0)2)6 + (03-2(0)2+(0))2 + ((0)3-(0)2)0= 2
Tabla 2
H(0)x = (2(0)3-3(0)2+1)3 + (-2(0)3+3(0)2)5 + (03-2(0)2+(0))5 + ((0)3-(0)2)4= 3
H(0)y = (2(0)3-3(0)2+1)6 + (-2(0)3+3(0)2)1 + (03-2(0)2+(0))0 + ((0)3-(0)2)(-1)= 6
Ejercicio resuelto para revisar resultados
Grafique la curva dada por los puntos P0(1,2), P1(3,6), P2(5,1) y los
tensores T0(2,2), T1(5,0), T2(4,-1).
t x y t x y
0 1 2 0 3 6
.15 1.2426 2.45975 .15 3.586 5.677
.30 1.411 3.158 .30 3.915 4.983
.45 1.565 3.973 .45 4.085 3.9851
.60 1.768 4.784 .60 4.2 2.904
.75 2.0781 5.468 .75 4.36 1.92
1 3 6 1 5 1
Catmull-Rom
La curva de Catmull-Rom define sus tangentes en base al punto previo y posterior
del punto de control.
H(0) = P0
H(1) = P1
T(0) = (0.5)(P1-P0)
T(1) = (0.5)(P2-P0)
Observación: Para el caso de punto Po como
no hay anterior se va tomar a Po como
anterior y para el ultimo punto en este caso
de la figura P4 se va tomar como posterior.
Para obtener T(0) = (0.5)(P1 –P0) y para
obtener T(3) = (0.5)(P4 –P2)
Ejercicio resuelto para revisar resultados
• Obtenga los tensores y los puntos que se generan en la curva formada
por los puntos de control: P0(2,4), P1(3,7) y P2(5,10).
Se obtienen los tensores con T(0) = (0.5)(P1-P0) T(1) = (0.5)(P2-P0)
T(3)=0.5(P2-P1). T0(.5,1.5) T1(1.5,3) T2(1,1.5) y después de haber
obtenido los tensores se aplica hermite para generar los puntos.
Obtención de Tensores
P0 T0= 0.5 P1-P0
P1 T1= 0.5 P2-P0
P2 T2= 0.5 P3-P1 P0 (2 ,4)
P3 T3= 0.5 P3-P2 P1 (3, 7) x
P2 (5, 10) T0 P1-P0 0.5*(3-2) 0.5 To (0.5,1.5)
P0 T0= 0.5 P1-P0 T1 P2-P0 0.5*(5-2) 1.5 T1 (1.5, 3)
P1 T1= 0.5 P2-P0 T2 P2-P1 0.5*(5-3) 1 T2 ( 1, 1.5)
P2 T2= 0.5 P2-P1
y
P0 T0= 0.5 P1-P0 T0 P1-P0 0.5*(7-4) 1.5
P1 T1= 0.5 P2-P0 T1 P2-P0 0.5*(10-4) 3
P2 T2= 0.5 P3-P1 T2 P2-P1 0.5*(10-7) 1.5
P3 T3= 0.5 P4-P2
P4 T4= 0.5 P4-P3
t x y t x y
0 2 4 0 3 7
.2 2.12 4.408 .2 3.368 7.648
.4 2.28 4.989 .4 3.829 8.344
.6 2.48 5.656 .6 4.296 9.016
.8 2.72 6.352 .8 4.712 9.592
1 3 7 1 5 10