Acceleration !

Discutez d'informatique ici !
jniac
Messages: 9
Enregistré le: 13 Mai 2018, 12:25

acceleration !

par jniac » 14 Mai 2018, 13:14

Hello, Joseph, nouveau venu sur le forum.

Pour des besoins à l'animation, je cherche à simuler le comportement d'un mobile (position, vitesse, acceleration) cherchant à rejoindre une cible (sur une seule dimension).

Les données en entrées sont les suivantes :
distance: une distance à parcourir [edit]
v0 (velocity @ t0) : une vitesse initiale
v1 (velocity @ t1) : une vitesse cible (pas forcément 0)
a0 : une accélération positive (pour la phase d'accélération, modélise un moteur)
a1 : une accélération négative (pour la phase de décélération, modélise une système de freinage)

Les valeurs recherchées sont :
Si la situation est solvable (distance suffisante pour décélération).
tmax ou dt0 : la durée de la phase d'accélération
time ou t1 la durée totale de la manœuvre.

Le problème est assez trivial puisqu'il s'agit de trouver les racines d'une équation du second degré. Par tâtonnement, j'ai fini par programmer une solution (calcul de dt0, le reste des inconnues en déduction).
Quelqu'un peut-il cependant me redonner les étapes de résolutions ? Comment aurais-je dû procéder pour éviter les tâtonnements ?

Voici le shéma résumant le problème devenu géométrique :
La distance parcourue est la surface grise, elle même étant l'intégrale de l'évolution de la vitesse (courbe pyramide)
Image
Modifié en dernier par jniac le 16 Mai 2018, 12:54, modifié 1 fois.



jniac
Messages: 9
Enregistré le: 13 Mai 2018, 12:25

Re: acceleration !

par jniac » 14 Mai 2018, 13:24

Question subsidiaire, bcp moins triviale j'imagine, peut-on résoudre ce même problème en faisant intervenir une troisième accélération présente sur les 2 phases (accélération, décélération) qui par exemple simulerait la friction ?

friction = - vitesse * frictionRatio

Avatar de l’utilisateur
Ben314
Le Ben
Messages: 21483
Enregistré le: 11 Nov 2009, 23:53

Re: acceleration !

par Ben314 » 14 Mai 2018, 22:13

Salut,
Je sais pas les autres, mais perso, je comprend absolument que dalle à ton truc :
jniac a écrit:Les données en entrées sont les suivantes :
v0 (velocity @ t0) : une vitesse initiale
v1 (velocity @ t1) : une vitesse cible (pas forcément 0)
a0 : une accélération positive (pour la phase d'accélération, modélise un moteur)
a1 : une accélération négative (pour la phase de décélération, modélise une système de freinage)


Les valeurs recherchées sont :
Si la situation est solvable (distance suffisante pour décélération). <= Quelle distance : y'a aucune distnce donnée en entrée !!!!
tmax ou dt0 : la durée de la phase d'accélération <= O.K. on accélère, mais pour savoir combien de temps on va accélérer, ben le mii du mini, ça serait d'avoir un objectif en tête, non ?
time ou t1 la durée totale de la manœuvre. <= La "manœuvre" consistant à faire quoi ?
Qui n'entend qu'un son n'entend qu'une sonnerie. Signé : Sonfucius

jniac
Messages: 9
Enregistré le: 13 Mai 2018, 12:25

Re: acceleration !

par jniac » 15 Mai 2018, 11:25

Raah, c'est pas la première fois que je suis dans cette situation, je fais des maths de manière tellement intuitive et empirique que je n'arrive pas à communiquer mon problème. Merci, d'avoir répondu tout de même. Je reviens avec une démonstration de la solution de mon problème, et derrière pliz, pliz, corrigez moi, aidez-moi à formuler correctement le problème.

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 14:00

Re: acceleration !

par fatal_error » 15 Mai 2018, 22:00

hello,

ca me parait suffisamment clair pr moi:
Quelle distance : y'a aucune distnce donnée en entrée !!!!

considère la distance d un paramètre (qui a été omis). Le but est de trouver le temps tmax tel que on accélère jusqu'à t=tmax puis apres on décélère jusqu'à arriver à la vitesse v1 ET la distance totale parcourue est inférieure à d

La "manœuvre" consistant à faire quoi ?

La manoeuvre consiste à accélérer jusqu'à tmax et à décélérer jusqu'à atteindre la vitesse v1.
la vie est une fête :)

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 14:00

Re: acceleration !

par fatal_error » 15 Mai 2018, 22:53

Concernant la réponse:

Intuitivement, SI v1 > v0, il suffit d'accélérer jusqu'à au moins obtenir v1. (puis apres ya pas besoin de décélérer)
Réciproquement, SI v1 < v0, il y a pas besoin d'accélérer et il suffit de décélérer.

Ce qui nous donne la distance minimale de la manoeuvre.

Maintenant (supposons v1 > v0) on peut accélérer jusqu'à atteindre une vitesse légèrement supérieure à v1 (ou bcp supérieure à v1), plus la vitesse vmax augmente et plus le temps nécessaire augmente ainsi que la distance parcourue...

Il y a donc une vitesse vmax "limite" telle que apres, la distance maximum D est dépassée.

Je vois pas trop l'intérêt d'accélérer pour parcourir pil la distance escomptée, mais bon...

Pour modéliser on peut poser considérer les phases 0 et 1 (resp accel, decel)


v_m vitesse max (AU MOINS >= v_0)
(nmlt X (t) c'est pour la position, mais ici c'est bien une vitesse)

soit dtot distance totale:


on a deux contraintes:


en remplaçant (2) dans (1), on a (1) fonction de v_m, t_m, dt_1
en se rappelant que
v_m = X_0(t_m) <=> v_m = v_0 + a_0t_m

on a (1) fonction de t_m, dt_1
puis

v_1 = X_1(dt_1)
on a:
v_m + a_1dt_1 = v_1 <=>
v_0+a_0t_m + a_1dt_1 = v_1 <=>
dt_1 = (v_1 - v_0 - a_0t_m ) / a_1

on a alors (1) fonction de t_m
on déduit alors t_m

-----

Si on veut rajouter la friction, je présume qu'on peut poser

avec friction(t) = X_0(t)C


puis même chose intégrer et appliquer un solveur

(très) pblmt quelques étourderies...
la vie est une fête :)

jniac
Messages: 9
Enregistré le: 13 Mai 2018, 12:25

Re: acceleration !

par jniac » 21 Mai 2018, 11:29

Merci pour la réponse, je vais prendre le temps de la déchiffrer.
Je voulais revenir avec une exemple interactif illustrant mon besoin.
Voici donc 2 liens, le second test est le plus abouti.
Ma problématique concerne l'animation en temps réel (application, site web, installation) :
J'ai le besoin de faire évoluer une valeur donnée vers une valeur cible de manière la plus "douce", selon la courbe la plus "lisse". La difficulté vient de ce que cette cible peut changer au cours du temps, et avant qu'elle n'est pu être atteinte. Pour ajuster la nouvelle transition (position courante, vitesse courante, vers la nouvelle cible) j'ai besoin de pouvoir résoudre ce problème géométrique (la section présentée plus haut et que l'on retrouve dans les démo intéractive).

Ceci donne la raison de pourquoi vouloir accélérer au "maximum".

Une autre illustration du problème pourrait être celui d'un pilote de course :
Soit une distance d entre 2 virages. Le pilote sait qu'il sortira du premier virage à la vitesse v0, qu'il doit atteindre le virage suivant à la vitesse v1 (au delà il sortira de la piste). Le moteur de la voiture fournit une accélération continue ( a0 ). Les freins offrent un force continue ( a1 ).
Quand le pilote, qui cherche à minimiser le temps nécessaire à parcourir d, doit-il cesser d'accélérer pour commencer à freiner ?

Démo interactives (utilisant les dernières normes du javascript les démos ne tourne que sur Chrome et Safari).
Le mouvement du mobile apparaît bien comme "naturel", "souple" :
https://node.josephm.fr/misc/accelerati ... est-1.html
https://node.josephm.fr/misc/accelerati ... est-2.html

Les transitions avec vitesse initiale négative me sont particulièrement précieuses, pour éviter les habituelles "cassures" dans l'animation.
Image

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 6 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite