Bonjour !

Pour l'instant, je fais un calcul de vitesse/position comme si je n'avais aucune force autour de moi:

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;
 }
Ca marche bien pour accelerer, la vitesse maximale est gerée par une simple constante.
La est le probleme !
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;
}
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
  1. la vitesse maximale soit calculée aussi en fonction de cette force
  2. 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