Estoy tratando de escribir un método que interpola de 0 a x (posición de un objeto en una dimensión) en el tiempo usando aceleración al comienzo y desaceleración al final (suavizar/facilitar) con las únicas restricciones que se proporciona el tiempo total, así como la duración de la aceleración y deceleración. el movimiento debe replicar el efecto de inercia y estoy considerando un Hermite curve para las porciones no lineales.Matemáticas: Facilitar la entrada, facilitar un desplazamiento usando la curva de Hermite con restricción de tiempo
double Interpolate(
double timeToAccel, double timeCruising, double timeToDecel,
double finalPosition,
double currentTime)
{
//...
}
¿Alguien me puede indicar una parte del código que hace eso? No sé cómo integrar la curva de Hermite, por lo tanto, no sé cuánto moveré en la porción de aceleración o en la porción de desaceleración y, a su vez, no puedo determinar cuál será la velocidad en el lineal. parte.
Gracias.
Some reference para ilustrar mi pregunta.
Edición:
velocidades- de inicio y fin son nulos, y el tiempo actual también es parte de los parámetros en el método, he actualizado la firma.
- básicamente la idea es imaginar un movimiento a velocidad constante en una distancia d, esto da una duración total. Luego agregamos las fases de aceleración y desaceleración, manteniendo la misma duración, por lo tanto, tenemos una nueva velocidad de crucero desconocida para determinar (porque movemos menos en las fases de Hermite que en las fases lineales que han reemplazado). Tal vez la cantidad de movimiento perdido en las fases de Hermite, en comparación con un movimiento lineal de la misma duración es la relación entre el área superior e inferior en las curvas, solo una idea de un no experto.
Editar: Roman y Bob10 han proporcionado soluciones de trabajo completas. Implementé el código de Roman. ¡Gracias a ambos, muchachos! Aprecio su apoyo perfecto y sus soluciones detalladas, me salvó largas búsquedas y ensayos.
son las velocidades de punto final a cero? –
Sí Victor, lo son. – 742