Curvas de Bézier

Contenido

  1. Introducción
  2. Curva lineal o grado 1
  3. Curva cuadrática o grado 2
  4. Curva cúbica o grado 3
  5. Curvas de mayor grado
  6. Spline cúbico de Hermite
  7. Notas
  8. Referencias

Introdución

Todo esto que voy a mencionar es lo que he aprendido de este tema que tiene uso práctico >:]


La interpolación es un procedimiento que se hace para generar puntos que conecten a 2 (o más) puntos determinados con la intención de tener algo útil que los conecte. Su contraparte, la extrapolación, es el procedimiento para generar puntos fuera de un intervalo de puntos y puede usarse para crear curvas que predigan el comportamiento de unos puntos base.


Image could not be loaded.

Las curvas de Bézier son un tipo de curva que se puede usar para hacer interpolación entre 2 puntos. La forma de la interpolación final depende del número de "puntos intermedios" que se usen. Estos puntos intermedios no son puntos por los cuales la curva va a pasar (puede que pase, pero ese no es el punto) sino puntos que rigen la forma que ésta va a tener en el espacio.


Dependiendo del número de puntos intermedios se tiene el grado de la curva de Bézier:


Al usar los 2 puntos extremos y los puntos intermedios definidos, lo que se busca es parametrizar cada coordenada en la que esten específicados los puntos en función de una variable. En este escrito se va a usar la letra t como esa variable.


Parametrizar consiste en especificar el comportamiento de una variable en función de otra. Esto agrega otros sistemas en el que cada variable se puede graficar en función de la variable de parametrización escogida.


Image could not be loaded.

Ejemplo de una parametrización de 2 coordenadas. Con las parametrizaciones pueden generarse curvas poco usuales.


Curva lineal o grado 1

La interpolación que se hace entre 2 puntos sin puntos intermedios es la más básica: una recta que conecte a los puntos directamente.


Image could not be loaded.

El efecto de la curva de Bézier se ve mejor al interpolar puntos de 2 dimensiones por lo que los ejemplos de Desmos compartidos serán de esa forma. Desmos.


Image could not be loaded.

Imagen equivalente de Wikipedia.


Esta curva es la principal y a partir de ella se generan las demás.

Curva cuadrática o grado 2

La curva cuadrática se obtiene de la siguiente forma:


Mejor hecho que dicho:


Image could not be loaded.

La expresión obtenida en la imagen corresponde a la de un polinomio de segundo grado (cuadrado), por eso el nombre de la curva es Bézier cuadrático. En la imagen se puede ver la curva generada (en negro) y como se genera al recorrer todas las interpolaciones lineales de principio a fin en "el mismo tiempo". Desmos.


Image could not be loaded.

Imagen equivalente de Wikipedia.


Curva cúbica o grado 3

La curva cúbica se obtiene de la siguiente forma:


Aquí vamos otra vez:


Image could not be loaded.

Las expresiones se van haciendo más largas... Desmos.


Image could not be loaded.

Imagen equivalente de Wikipedia.


Curvas de mayor grado

Por lo mencionado arriba se puede más o menos predecir como construir las expresiones de grado n:

Image could not be loaded. Image could not be loaded.

Imágenes de Wikipedia.


Es un poco horrible pero pueden generarse las curvas de ese modo >:]

Spline cúbico de Hermite

Este es un tipo de interpolador usado en la práctica y se puede especificar como una curva de Bézier cúbica. Su expresión general viene dada por


Image could not be loaded.

Visto desde la perspectiva de una curva de Bézier: En vez de especificar los valores de los 4 puntos necesarios para la interpolación de la curva (ya que es cúbica), especifica los puntos inicial y final de la interpolación (P0 y Pf), la "pendiente" para ir del primer punto al segundo (m0) y la "pendiente" para ir del tercero al último (mf). Estas pendientes no son respecto a la variable de parametrización t pero con respecto a la variable a.


Menciono esta expresión en este escrito ya que es el interpolador usado en las animaciones de esqueleto de Super Mario Galaxy. También, ya que tiene una peculiaridad, como se dijo, aquí no se especifica la posición de los puntos intermedios pero se especifica la pendiente, sin embargo, eso no me dice nada sobre la posición de esos puntos en la coordenada de interpolación y tampoco sobre el valor que tienen.


Image could not be loaded.

¿Cómo se puede saber en donde estan estos puntos en el sistema P vs t? Bueno, se me ocurrió usar una expresión Bézier cúbica 2D y empezar a asumir ciertas cosas...



Image could not be loaded.

Como quiero ajustar la gráfica de y2 vs x2 a la que está en y1 vs t1 entonces y2(t2) = y1(t1) y x2(t2) = t1. Además, como y2(t2) = y1(t1) entonces t2 = t1 lo que implica que x2(t2) = t2. Por simplicidad en la notación, t2 = t1 = t, x2(t2) = t1 --> x(t) = t y y2(t2) = y1(t1) = y(t).


Image could not be loaded.

En la expresión de x(t) = t los puntos intermedios y se asumen fijos (se supone que esos puntos no se mueven al cambiar la variable de parametrización). Considerando esto, se pueden generar varias expresiones x(t) = t con valores de t distintos en donde y son variables. Todas las intersecciones entre las distintas x(t) = t deberían caer en un mismo punto entonces! Al hacer eso se reflejan los valores de y que eran desconocidos (no quiero añadir la deducción general con sólo 2 rectas ya que es muy larga y fastidiosa así que solución gráfica a través de Desmos >:]).



Image could not be loaded.

Como puede verse en el gráfico tα = t0 + (1/3)(tf - t0) y tβ = t0 + (2/3)(tf - t0). Esto significa que se ubica a 1/3 de la distancia entre t0 y tf, y se ubica a 2/3 de la misma distancia. t0, , y tf se encuentran igualmente espaciados entre sí!


Con esto ya se tienen todas las variables del Spline cúbico de Hermite desconocidas y cómo convertirlas para su uso en una curva de Bézier cúbica. Estoy seguro que hay otras formas de verificar esto de una forma más sencilla pero yo me compliqué moviéndome por aquí.


Spline cúbico de Hermite interactivo en Desmos


Notas

Referencias