Velocidad en Curva Bézier

La animación se sentía aburrida y tiesa. Hacía falta añadir velocidad en la entrada y salida de entidades.

Como cada segmento de las curvas solo incluye dos puntos y mi implementación une todos los segmentos necesarios para lograr cualquier tamaño requerido, añadir velocidad fue un poco tedioso.

fromSpeed = speed * accelerationMultiplier;
toSpeed = speed;

Además de la interpolación lineal básica (línea 120), tengo que modificar la variable que representa la velocidad (finalSpeed).

bezier.derivativeAt(tmpA, lerp);

lerp += finalSpeed / tmpA.len();

Necesito otra variable que represente la interpolación lineal de la velocidad (speedLerp)

speedLerp = Math.min(speedLerp + (speed / tmpA.len()) / deceleratePosition, 1);

finalSpeed = MathUtils.lerp(fromSpeed, toSpeed, speedLerp);

Con todo ya calculado, puedo entonces conseguir el valor del punto en pantalla que corresponde a ese tiempo.

bezier.valueAt(tmpB, lerp);

Y asi se ve:

Únete a otros 35 suscriptores

Deja una respuesta

Anuncios


Anuncios