IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Mathématiques Discussion :

Application de vitesse = distance/temps


Sujet :

Mathématiques

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Points : 109
    Points
    109
    Par défaut Application de vitesse = distance/temps
    Salutations !

    Je voudrais appliquer la formule ci dessus, pour bouger des objets d'un point I (initial) à un point F (final) et leur donner une impression d'accélération au début du déplacement et de décélération en fin.

    Je peux calculer le temps total T.
    Je connais la distance à parcourir DistanceTotale.

    La formule indique que la vitesse = distance parcourue / T.

    Je pense donc qu'il faut que je fasse varier la vitesse pour donner cet impression de trajectoire. Cependant, j'avoue ne pas trop savoir comment m'y prendre...

    J'ai une fonction qui doit être appelée tout les t temps (par exemple T/10, dont 10 appel) et il faut que je détermine quelle est la position de mon objet...

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Points : 923
    Points
    923
    Par défaut
    Il vaut mieux que tu raisonnes alors en termes d'accélération:
    Il te suffit alors d'intégrer l'accélération pour obtenir la vitesse, puis d'intégrer la vitesse pour obtenir la position:
    exemple à accélération a constante:
    v = a*t + v0 (v0 = vitesse initiale)
    x = a*t²/2 + v0*t + x0 (x0 = abscisse initiale)
    Ou alors tu raisonnes directement en termes de vitesse que tu epux par exemple faire varier de façon linéaire au cours du temps

  3. #3
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par oiffrig Voir le message
    Ou alors tu raisonnes directement en termes de vitesse que tu epux par exemple faire varier de façon linéaire au cours du temps
    Ou alors, tu raisonnes directement en terme de position avec une interpolation non-linéaire (par exemple une sigmoide)

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    double t=0, T=10;
     
    void timer_a_appeler_10fois(double t) {
      double alpha = f(t/T):
      Position = (1-alpha)*initial + alpha*final;
      t=t+(T/9);
    }
     
    double f(double x) {
      /* fonction sigmoide telle que: f(0)=0 et f(1)=1  */
      /* par exemple avec une tangente hyperbolique: */ 
      int speed=3;
      return (1 + tanh(speed*(x-0.5)) / tanh(speed*0.5) ) / 2;
    }
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Points : 109
    Points
    109
    Par défaut
    Oui, hi, je sais pas ce que c'est une sigmoid ^^
    Mon copain a essayé aussi un truc... je suis contente que vous m'aidiez mais je voudrais comprendre...

    En gros, pour avoir une fonction qui accélere vite et ralentisse vite en fin, ça ressemble à une fonction en x^2

    si j'ai ma fonction qui ressemble à cela:

    ................***
    ..............*......*
    .............*........*
    ............x0..........x1
    .............[distance]

    Je connais la distance que je devrais parcourir... Il faut donc que j'arrive à positionner mes points x0 et x1 tels que sur cette courbe, lorsque y0 et y1 sont égaux, la distance entre x0 et x1 est égale à la distance à parcourir...

    Donc si j'ai bien compris, dans un premier temps, je dois trouver l'équation de la courbe, telle que x0 et x1 sont bien placé par rapport à la distance que je veux parcourir...

    Ensuite, selon la formule physique, v = distance parcourue/T (moi au départ j'ai distance à parcourir et T)
    J'ai besoin de pouvoir grace à cette équation savoir, qu'elle distance je dois parcourir à un instant t ou à quelle vitesse de doit avancer à cet instant t...

    Et pour cela il faut dériver pour avoir la vitesse...?
    (Pourquoi, j'ai oublié mes cours de physique, je vais regarder)...

    Du coup, cela nous donne une fonction du genre...
    x = (a/3)*t^3 + (b/2)*t^2 + d

    Et comme on sait qu'en x0 et x1 la vitesse est nulle. Et que l'on commence à décellerer lorsque la dérivé atteint 0, on trouve:

    a = -6( x1 - x0)/t^3
    b = 6 (x1 - x0) / t^2
    c = 0
    d = x0

    Bon en fait, c'est parce que l'on m'a expliqué cela et j'ai pas trop compris comment on arrive à la fin...

    Mais cette histoire de sigmoid, c'est quoi exactement...le principe...?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Points : 109
    Points
    109
    Par défaut
    Au fait, juste pour petit rappel, les seuls donnée que je peux avoir au départ, c'est :
    * la distance que je devrais parcourir,
    * le temps totale pour le faire
    * le nombre de t qui vont être appelé... (En gros je vais devoir trouver la nouvelle distance à parcourir ou où je dois me trouver par rapport à la distance à parcourir à chacun de ces instants t...

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Points : 109
    Points
    109
    Par défaut
    En gros si je suis capable de déterminer la vitesse à l'instant t, je peux connaitre la distance à parcourir, c'est cela...?

  7. #7
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,

    la sigmoïde est une courbe mathématique avec une forme représentant une demi chainette. C'est la courbe qu'il faut utiliser si tu veux qu'une bille en mouvement de chute aille le plus vite entre deux points.
    Donc pour le démarrage, tu utilises la sigmoïde pour avoir la variation de ta vitesse (ton accélération).
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Points : 109
    Points
    109
    Par défaut
    Merci je viens de voir cela sur wikipedia... ^^

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Points : 109
    Points
    109
    Par défaut
    La fonction f(x) pour la sigmoide me renvoie la position sur la courbe (x, y)...
    Mais cela me permet de déterminer quoi...? la distance à parcourir entre t0 et t1 c'est cela...?

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Points : 109
    Points
    109
    Par défaut
    Heu avec la fonction sigmoide que tu m'as donnée, la distance c'est toujours 1, c'est cela... Il faut que je la paramètre pour mettre la distance totale souhaitée...?

  11. #11
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par zuzuu Voir le message
    La fonction f(x) pour la sigmoide me renvoie la position sur la courbe (x, y)...
    Mais cela me permet de déterminer quoi...? la distance à parcourir entre t0 et t1 c'est cela...?
    C'est une fonction d'interpolation. Essayons d'expliquer:

    ---------------------------------------------------------

    Soit P(t) la position de ton point au temps t, avec t variant entre 0 et 1 (pour simplifier). Alors on doit avoir:

    • p(t=0) = position initale = I
    • P(t=1) = position finale = F
    • La fonction P(t) doit être continue sur 0...1 (= pas de "téléportation" façon startrek)


    C'est à dire que:
    P(0<t<1) = position intermediaire, quelquepart entre I et F

    ---------------------------------------------------------

    L'idée de base c'est de faire une interpolation linéaire:

    P(t) = (1-t)*I + t*F

    on a bien: P(0)=I et P(1)=F, et on varie linéairement de I à F car dP(t)/dt = constante.

    ---------------------------------------------------------

    Maintenant, pour ajouter la notion d'accélération au début, et de décélération à la fin, il faut utiliser une interpolation non-linéaire:

    P(t) = (1-f(t))*I + f(t)*F

    avec "f(t)" telle que:
    • f(0) = 0, pour avoir P(0)=I
    • f(1) = 1, pour avoir P(1)=F
    • pour t<0.5, il faut que df(t)/dt = fonction croissante (accélération)
    • pour t>0.5, il faut que df(t)/dt = fonction décroissante (décélération)


    ce qui fait que la fonction "f(t)" aura une forme de S (= sigmoidale)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     ^
    1|         ___
     |        /
     |      /
    0| ___/
     +------------->
      0          1
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Points : 109
    Points
    109
    Par défaut
    Super explication, merci beaucoup... Je teste tout ça alors... ^^

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Points : 109
    Points
    109
    Par défaut
    Waw, c'est magnifique !!! Je crois que j'ai un petit bug, mais sinon, dans l'ensemble ça donne quelque chose de magnifique !!

    Merci beaucoup !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. application pour limiter le temps d'ouverture d'une session
    Par Blue_Strike dans le forum Windows XP
    Réponses: 6
    Dernier message: 24/06/2009, 20h30
  2. Modeliser une application de control à distance des serveurs
    Par pacototo dans le forum Diagrammes de Classes
    Réponses: 2
    Dernier message: 13/02/2009, 23h44
  3. Distance, temps et vitesse
    Par buzzkaido dans le forum Mathématiques
    Réponses: 5
    Dernier message: 13/06/2008, 21h38
  4. Application de gestion des temps de travail
    Par etorria dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 06/03/2008, 18h15
  5. application de gestion à distance
    Par szambaux dans le forum Linux
    Réponses: 4
    Dernier message: 14/12/2007, 08h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo