Bonjour !
Pour l'instant, je fais un calcul de vitesse/position comme si je n'avais aucune force autour de moi:
Ca marche bien pour accelerer, la vitesse maximale est gerée par une simple constante.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 inline const double Physics::velocity(const double& a, const double& dt, const double& v) { return (a * dt) + v; } inline const double Physics::position(const double& a, const double& dt, const double& v, const double& p) { return (a * dt*dt) / 2) + (v * dt) + p; }
La est le probleme !
Je voudrais transformer ces equations/ce code en ajoutant une force venant du sol (une constante de signe inversée par rapport au signe de mon acceleration ?) pour que
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 // dans le header /* real position */ double x; double y; /* base */ double ya; // acceleration double yt; // time double yv; // velocity double xa; double xt; double xv; /* max velocity*/ double mxv; double myv; // la fonction qui met a jour la position void Physics::move() { int t = clock(); // on récup le temps actuel (pour delta temps (t-xt)) x = position(xa, t-xt, xv, x); // on calcule la position en abs y = position(ya, t-yt, yv, y); // on calcule la position en ord xv = (xa > 0) ? (velocity(xa, t-xt, xv) >= mxv) ? mxv : velocity(xa, t-xt, xv) // mouvement vers la droite : (velocity(xa, t-xt, xv) <= -mxv) ? -mxv : velocity(xa, t-xt, xv); // mouvement vers la gauche yv = (velocity(ya, t-yt, yv) >= myv) ? myv : velocity(ya, t-yt, yv); xt = t; // et hop on met le temps a jour yt = t; }
- la vitesse maximale soit calculée aussi en fonction de cette force
- que si mon acceleration devient nulle, la force prend le dessus doucement, et alors j'ai une deceleration !
Quelqu'un saurait me dire quel chemin suivre ? :o
Partager