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

Physique Discussion :

Physique du point


Sujet :

Physique

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 43
    Points : 22
    Points
    22
    Par défaut Physique du point
    Salut tout le monde,

    J'ai un peu cherché sur le forum, sans succés, donc je crée mon post.
    J'ai dans l'idée de créer un petit jeu, dont la modélisation physique ne nécessite que de gérer des points.
    La physique du point etant quand meme pas tres difficile, j'vais essayer de developper moi meme le mteur physique plutot que d'acceder a l'artillerie lourde des moteurs tout faits.

    ma question est la suivante:
    Si j'ai un modele juste basique: chaque point est associé a un vecteur acceleration a, un vecteur vitesse v, et une position p.
    j'appelle dt l'intervalle de temps entre deux frames.
    on suppose que mon objet a une masse m

    Si je me contente de faire pour la frame n+1:
    m.a(n+1) = somme de mes forces
    v(n+1) = v(n) + a(n).dt
    p(n+1) = p(n) + v(n).dt


    Ca va marcher???
    j'ai des vagues souvenirs de mes etudes ou il me semble que ce genre d'approche diverge assez rapidement demaniere oscillatoire... du coup, y'a quoi comme approche qui fonctionne. on m'a parlé de Runge Kutta.... mais j'ai pas tres bien compris comme l'appliquer a mon probleme.
    bref, j'imagine que ce probleme simple a deja du etre étudié. si vous avez un article (meme en anglais) qui parle de la resolution de ce probleme, je suis fortement interessé!!

    merci d'avance

    Z.

  2. #2
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Salut,
    ça me semble correct, du moment que tu ne gères pas la rotation (vélocité angulaire). Sinon pour les forces voici ce que je fais :

    a = a + f * -m;

    [edit] beaucoup d'infos à ce sujet ici : http://www.euclideanspace.com/physics/index.htm[/edit]

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 43
    Points : 22
    Points
    22
    Par défaut
    merci pour ta reponse

    effectivement, je ne gere pas de rotation.

    par contre, je ne comprends pas ta formule...
    tu peux me detailler stp?

    merci

    Z.

  4. #4
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Je l'utilise pour appliquer une force ponctuelle à un solide, mais en fait je me suis trompé c'est :

    acc = acc + force / mass;

    Normalement il me semble que ça donne une force en unités/seconde.
    acc, force étant des vecteurs et mass un scalaire.

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 537
    Points : 2 548
    Points
    2 548
    Par défaut
    Oulla,

    A mon avis ça part mal.

    Déjà, travaille à pas constant, sans quoi tu ne pourra pas débugguer facilement.

    Ensuite, la vitesse et l'accélération, ce sont les dérivées de la position. Tu peux donc les retrouver facilement : v = [p(t)-p(t-1)]*(1/dt)

    Ensuite, le mieux est de travailler par impulsions. Sans quoi tout va virer au casse tête.

  6. #6
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Pour l'instant on parle juste de cinématique et les formules qu'il donne sont justes et fonctionnent très bien. Inutile d'ajouter des impulsions tant que tu ne parles pas de collisions. D'autre part, je ne vois pas en quoi tu peux en déduire qu'il ne travaille pas à pas constant d'après ces formules ?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 43
    Points : 22
    Points
    22
    Par défaut
    Salut,

    travailler a pas constant, je sais pas si je vais en etre capable, sachant que mon pas de temps dt va etre determiné par la durée de calcul de mes frames.
    si cette durée est pas constante, et y'a pas de raison qu'elle le soit, du coup le pas sera pas constant.

    par ailleurs je comprends pas la formule.
    pour moi a(n) = F(n)/m, pourquoi du fais a(n) = a(n-1) + F/m

    sauf erreur de ma part, si t'as une force constante, style la gravité, tu te retrouves vite avec ton a qui tend vers l'infini, non?

    y'a pas un tuto qui traite de ce probleme - somme toute assez basique - avec les bonnes methodes a adopter??

    merci pour les reponses en tout cas

    Z

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 537
    Points : 2 548
    Points
    2 548
    Par défaut
    Citation Envoyé par zeder59 Voir le message
    j'appelle dt l'intervalle de temps entre deux frames.
    Moi, j'en déduis que dt va dépendre du rendu graphique, ce qui n'est pas forcément une bonne chose.

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 537
    Points : 2 548
    Points
    2 548
    Par défaut
    sinon :

    p(n+1) = 2*p(n) - p(n-1) + I

    ou I est l'impulsion, I = f/m*dt

    Elle est pas belle la vie ?

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 43
    Points : 22
    Points
    22
    Par défaut
    comment tu peux rendre ton dt independant du framerate??

  11. #11
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 537
    Points : 2 548
    Points
    2 548
    Par défaut
    Oui, bien sur.

    Tu choisis par exemple dt = 10ms . Et tu fais un nombre de tours de physique variable entre chaque phase de rendu.

Discussions similaires

  1. TChart : déplacer un point
    Par Nicolas dans le forum C++Builder
    Réponses: 3
    Dernier message: 06/11/2002, 18h05
  2. compression de données du point de vue algorithmique
    Par GoldenEye dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 26/06/2002, 15h51
  3. Réponses: 3
    Dernier message: 12/06/2002, 19h03
  4. savoir si 1 point est a l'intérieur d'un cercle ...
    Par skarladevobsy dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 23/05/2002, 18h14

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