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:


Deja una respuesta