(Vea las ediciones en la parte inferior)
Estoy tratando de utilizar curvas de Bézier como una herramienta de animación. He aquí una imagen de lo que estoy hablando:
Básicamente, el eje de valores puede representar cualquier cosa que puede ser animada (posición, escala, color, básicamente cualquier valor numérico). La curva Bézier se utiliza para controlar la velocidad a la que el valor está cambiando tan bien como inicio y el valor final y el tiempo. En este gráfico, la animación valor que poco a poco se acelere a una velocidad constante, luego desacelerar y detener.
El problema es, que una curva de Bézier se define con ecuaciones paramétricas.
fx(t):=(1−t)3p1x+3t(1−t)2p2x+3t2(1−t)p3x+t3p4x
fy(t):=(1−t)3p1y+3t(1−t)2p2y+3t2(1−t)p3y+t3p4y
Lo que necesito es una representación de la misma curva Bézier, sino que se define como value = g(time)
, que es, y = g(x)
.
He tratado de solucionar t
en la x
ecuación y sustituyendo en la y
ecuación, pero que de 3er grado me está dando algo de dificultad.
También probé la integración de la derivada de la curva Bézier (dy/dx
) con respecto a t
, pero no hubo suerte.
Alguna idea?
Nota : "no definido" situaciones se evitan mediante la prevención de la tangente en los puntos de control de salir del casco horizontal, evitando la superposición en el eje del tiempo.
EDITAR: He encontrado dos posibles soluciones. Uno utiliza el algoritmo de Decasteljau a la aproximación de las s parámetro de la t parámetro: s siendo el parámetro de la curva paramétrica y t siendo el parámetro de tiempo. Aquí (en la parte inferior).
El otro, por lo que puedo entender de la misma, recrea una ecuación polinómica de tercer grado de coincidencia de la curva de resolver un sistema de ecuación lineal. Aquí. Entiendo la idea, pero no estoy seguro de la aplicación. Alguna ayuda?