J'ai posé une question similaire il y a quelques heures, mais je pense qu'il y avait trop d'informations dans cette question, donc j'ai supprimé celle-ci et j'ai rendu celle-ci plus pertinente.La décélération ne fonctionnait pas comme prévu
J'essaie de déplacer un objet avec une accélération décroissante dans un laps de temps spécifié mais l'accélération atteint 0 avant que l'objet n'atteigne la destination.
Je calcule l'accélération comme ceci:
//Linear acceleration starts at 0 and finishes at 2.
acceleration = this.elapsed/(this.duration/2.0f);
accélération sera une valeur comprise entre 0 et 2 en fonction du temps écoulé. La valeur sera plus proche de 2 lorsque le temps écoulé est plus proche de la durée (totale).
Donc, pour calculer une décélération que je ferais:
//Linear deceleration starts at 2 and finishes at 0.
acceleration = 2.0f - this.elapsed/(this.duration/2.0f);
Cela semble fonctionner très bien, mais l'objet décélérer atteint jamais la destination, à environ 99% de la distance la elapsedTime devient supérieure à la durée totale, provoquant l'accélération à devenir négatif. En d'autres termes, il semble avoir décéléré d'environ 1% trop vite.
L'accélération d'origine fonctionne parfaitement, tout comme la vitesse linéaire. C'est juste la décélération qui ne fonctionne pas correctement.
Est-ce que je fais quelque chose de mal?
Merci
Veuillez préciser les quantités que vous exprimez (accélération, vitesse, déplacement, temps?) Et les unités des variables impliquées. Comme je l'ai lu en ce moment, vous définissez l'accélération = temps/temps, ce qui n'a aucun sens. –
Quels sont les types de données et la durée? Sont-ils aussi flottants ou sont-ils des entiers? – mclark1129
Dans mon code pour le moment la durée est 2000, cela signifie que cela prendra 2 secondes pour que l'objet atteigne la destination. Le temps écoulé correspond au temps écoulé depuis le départ de l'objet. Donc, quand il a bougé pendant 1 seconde, l'accélération serait de 1.0f. Quand il a bougé pendant 0.5f seconde, l'accélération serait de 0.5 etc. Puis je l'inverse pour la décélération, donc après 0.5 secondes l'accélération serait 1.5f si l'objet décélère. Cela me donne une accélération moyenne de 1.0 pour qu'il atteigne la destination en même temps que l'objet sans accélération. – Orujimaru