Tengo un objeto que comienza con velocidad = 0. Acelera hasta una velocidad máxima conocida y continúa a partir de ahí con velocidad constante (velocidad máxima).
Mi problema: ¿Cuánto tiempo se tarda en llegar a un destino conocido?
Lo he descrito visualmente así: Donde tenemos la velocidad en el eje vertical, y el tiempo en el eje horizontal. Hasta donde las líneas se cruzan (llamemos a este tiempo $t_M$ la línea azul es la velocidad actual, después la línea roja. La ecuación de la línea azul es $v = a \cdot t$ donde $a$ es la aceleración, $v$ es la velocidad (eje vertical) y $t$ es el tiempo (eje horizontal). La ecuación de la línea roja es $v = M$ , donde $M$ es la velocidad máxima (conocida) y $v$ velocidad.
Como la distancia a recorrer es conocida, debería ser tan fácil como sumar el área bajo la línea azul, hasta que sea igual a la distancia solicitada. ¿Hay alguna manera de hacer esto sin manejar las áreas antes y después de $t_M$ ¿Individualmente?
Mi solución actual es:
$a$ (aceleración, conocida), $d$ (distancia solicitada, conocida), $M$ (velocidad máxima, conocida)
$t_M = M / a$
$distanceDuringAccel = t_M * M / 2$ (el área bajo la línea azul)
if distanceDuringAccel > d
We will not reach our destination during acceleration, add the area under the red line aswell
else
we will reach destination during acceleration. t = sqrt(2 * d / a)
Lo anterior funciona, pero se siente muy torpe. ¿Existe una forma mejor de abordar esto?