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 : Balle + barre : rebond elastique


Sujet :

Physique

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2002
    Messages
    291
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 291
    Points : 81
    Points
    81
    Par défaut Physique : Balle + barre : rebond elastique
    Bonjour :

    Voilà mon prob : j'ai une balle qui se deplace à une certaine vitesse..... j'ai une barre. Quand la balle rencontre la barre, j'aimerai que la barre se deforme comme si c'etait un elastique tendu et que la balle venait appuyer dessus.. (je sais pas si c'est tres clair...) (comme qqu'un qui saute sur un trampoline mais en 2D )

    En fonction du temps et en fonction de la vitesse de la balle, la barre se deforme jusqu'a un point P puis revient dans son etat initiale en redonnant de la vitesse à la balle.....

    J'aimerai pouvoir calculer la deformation de la barre au fil du temps pour un rendu "réel"... ou dumoins joli

    J'avais pensé, à un temps T, prendre 3 points (la balle et les 2 coté de la barre) et faire une parabole.. et ainsi de suite..
    Maintenant et ce que cela parrait realiste ou c'est pas comme qu'on fait ?

    merci de votre aide

    je n'ai pas encore choisi le langage.. masi ca sera un truc simple, genre un DC avec .NET car c'est juste pour des tests pas envi d'apprendre Opengl ou autre juste pour ca...

  2. #2
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Qu'es ce qui t"intéresse, car je pense qu'il y a sûrement plusieurs solutions d'implémentation à ton problème !

    Soit, tu vises le réaliste et la faut sortir les bouquins de physique.
    Soit, tu souhaites un effet sympa mais qui peut gérer pas mal de cas.
    Soit, tu souhaites un effet sympa que pour ce cas précis !

    Je pense qu'en plus il faut appliquer une gravité ou quelque chose qui freine la balle, sinon rapidement la balle va s'envoler dans l'espace intersidérale sans retour


    Peut être définir un maximum d’élasticité de l’élastique pour ne pas qu’il s’allonge à l’infinie, et donc une résistance, ainsi qu’une force maximum renvoyée, et un coefficient linéaire ou non de la force retournée suivant la vitesse de la balle.

    Avec tout cela je suis sur que tu peux créer quelque chose de sympathique !

    L'idée de la parabole peut faire un peu bizarre (sauf que l'effet de retour quand la balle ne touche plus l'élastique), prend un élastique entre tes 2 doigts et appuie dessus avec un doigt, tu verras la forme qu'il prend, cela ne ressemble pas à une parabole (enfin j'ai pas testé, mais quand je l'imagine, cela n'y ressemble pas).

  3. #3
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 638
    Points
    7 638
    Par défaut
    Citation Envoyé par Ti-R
    Soit, tu vises le réaliste et la faut sortir les bouquins de physique.
    Voire de RDM... équations de poutre en statique, sur deux appuis, avec une force ponctuelle, ça devrait aller.

    Citation Envoyé par Ti-R
    Je pense qu'en plus il faut appliquer une gravité ou quelque chose qui freine la balle, sinon rapidement la balle va s'envoler dans l'espace intersidérale sans retour
    Peut-être pas si loin... si il lâche la balle d'une certaine hauteur, elle n'ira pas plus haut. Enfin, si le comportement de la barre est bien modélisé!


    Citation Envoyé par Ti-R
    L'idée de la parabole peut faire un peu bizarre (sauf que l'effet de retour quand la balle ne touche plus l'élastique), prend un élastique entre tes 2 doigts et appuie dessus avec un doigt, tu verras la forme qu'il prend, cela ne ressemble pas à une parabole (enfin j'ai pas testé, mais quand je l'imagine, cela n'y ressemble pas).
    C'est une barre ou un élastique???
    Si c'est une barre, ce n'est pas une parabole mais une courbe de degré 3 (attention, je parle en statique, en dynamique je ne sais point, mais ça devrait y ressembler...).
    Cela dit, tu peux essayer de convertir l'énergie de mouvement de la balle en énergie de déformation de la barre. Avec un petit coef pour dire que l'on perd de l'énergie entre l'impact sur la barre et le renvoi de la barre, ça fera encore plus réaliste.
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  4. #4
    Membre régulier
    Inscrit en
    Novembre 2002
    Messages
    291
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 291
    Points : 81
    Points
    81
    Par défaut
    merci de vos reponse,

    EN fait pour l'instant je cherche surtout le moyen de deformer ma barre, et en effet ce n'est pas une parabole....mais sinon je ne vois pas trop comme faire d'autre.... y'a pas beaucoup de chose a ce sujet sur le net (ou alors je cherche mal)

    Pour la gravité, en fait ma balle est entouré entre 4 murs (un peu comme dans un casse brique) donc elle ne pourra pas s'envoler dans le sub-espace en distortion 9.3 masi en effet il y a aussi de la gravité.


    Si c'est une barre, ce n'est pas une parabole mais une courbe de degré 3 (attention, je parle en statique, en dynamique je ne sais point, mais ça devrait y ressembler...).
    Cela dit, tu peux essayer de convertir l'énergie de mouvement de la balle en énergie de déformation de la barre. Avec un petit coef pour dire que l'on perd de l'énergie entre l'impact sur la barre et le renvoi de la barre, ça fera encore plus réaliste.
    euh et au niveau informatique ca se traduit comment ?

  5. #5
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 638
    Points
    7 638
    Par défaut
    Citation Envoyé par CaptainChoc
    euh et au niveau informatique ca se traduit comment ?
    Avec un joli petit algorithme qui va bien!

    Plus sérieusement, il faut réfléchir un peu sur le sujet, simplifier autant que faire se peut, et coder tout ça (je viens de me taper les équations pour de la stabilité de plaque avec une méthode énergétique, c'est plus simple pour une barre mais je ne suis tout de même pas motivé pour le faire! ).

    En gros, pour simplifier, tu as une équation de degré 3 pour la déformée de la barre (en fonction de la rigidité de la barre, de sa section, etc etc => voir les équations de déformées de poutre en RDM, et/ou coller les coefficients qui vont bien pour que ça ressemble à quelque chose sur l'écran). Tu peux en déduire la surface couverte par la déformation de la barre (en intégrant l'équation de la déformée), que tu égalises (à un coefficient multiplicatif près) à l'énergie de la balle (à savoir 1/2.m.v², m masse de la balle, v vitesse de la balle). Tu résouds l'équation obtenue, ça te donne ta véritable déformée.

    Pour les déperditions d'énergie, tu poses que l'énergie de la balle renvoyée est égale à l'énergie de la balle réceptionnée multipliée par un coefficient compris entre 0 et 1.

    Attention, quand je parle de vitesse de la balle, c'est uniquement la composante perpendiculaire à la barre.

    Mais ça, c'est si tu veux quelque chose de vraiment réaliste... si c'est pour un casse-brique, c'est sortir le porte-avion pour tuer un moustique...

    Pour un truc simple, représentatif de loin, tu peux garder la parabole... ça fera un degré de moins sur l'équation (et sur l'intégrale).
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  6. #6
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Oui la parabole pour la un casque brique doit largement suffire

  7. #7
    Membre averti
    Homme Profil pro
    Game Graphics Programmer
    Inscrit en
    Août 2006
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Game Graphics Programmer
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 408
    Points : 392
    Points
    392
    Par défaut
    Si tu veux utiliser une librairie de physique, tu peux modeliser ton effet avec des joints élastiques acollés.
    J'avais vu une démo d'un matelas tombant assez réaliste se basant sur le même principe (je sais plus quel site par contre, mais c'était une demo de Newton ou de Novodex, je crois).

  8. #8
    Membre régulier
    Inscrit en
    Novembre 2002
    Messages
    291
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 291
    Points : 81
    Points
    81
    Par défaut
    oui c'est juste pour un casse brique... donc rien qui me prendra plus de temps que de faire le jeu... lol

    Cependant je me demandé si une parabole serai "realiste" dans le sens où ca fera jolie ?

    Voilà merci de votre aide

  9. #9
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 638
    Points
    7 638
    Par défaut
    Citation Envoyé par CaptainChoc
    Cependant je me demandé si une parabole serai "realiste" dans le sens où ca fera jolie ?
    Une portion de parabole, ça ressemble méchamment, de loin, dans le noir, et sur un 17 pouces, à une portion de courbe de degré 3...
    L'inverse aussi...

    Donc oui, ça sera suffisamment réaliste ou joli...
    Surtout pour ce que tu veux en faire (à moins que ça n'occupe toute la largeur de l'écran... et encore...)

    Et puis la beauté étant subjective en informatique, tu n'as qu'à tester.. et voir si ça te plait!
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  10. #10
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    Ce n'est qu'une petite idée, mais il y a un jeu de Trampoline qui est sorti en utilisant le moteur physique Newton Game Dynamics. Et en fait le "trampoline" était composé de pleins de petits carrés reliés par des joints, ce qui faisait que lorsque le personnage sautait sur le trampoline, ben tous les petits carrés réagissaient sous le poids du bonhomme, et puisqu'ils était reliés par des joints, le résultat était très réaliste !

    Regarde le résultat : http://youtube.com/watch?v=5Vqx44rqCm4

  11. #11
    Membre régulier
    Inscrit en
    Novembre 2002
    Messages
    291
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 291
    Points : 81
    Points
    81
    Par défaut
    Rebonjour, apres plusieurs semaines

    Donc j'ai essayé ma petit methode : c'est à dire j'ai ma balle, ma barre, quand la balle entre en collision avec la barre, je deforme la barre (je prends les 3 points : extremités de la barre + la balle) et je dessine une "Curve"

    Tant que la balle est sur la barre, je lui ajoute une force qui a le sens inverse de la vitesse.

    pour la petite partie de code :

    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
     
    // mise a jour de La Balle : 
     
    mVitesse.Y = mVitesse.Y*mFrottement.Y+mGravite.Y+mForce.Y;
    NouvPosY = Temps * mVitesse.Y + PosY;
     
    //////////////////////////////////////////////////////////////////////// 
     
    // mise à jour de la barre la barre :
    // si la balle est sur la barre
    if (mBalle)
    {
     
            // la balle passe au dessus de la barre 
    	if (mBalle->GetPosition().Y+mBalle->GetDimensions().Height < mPosition.Y)
    	{
    		mBalle->SetForce(PointF(0, 0));
    		mBalle = nullptr;
    	}
    	else
    	{
    		if (mBalle->GetVitesse().Y > 0)
    			mBalle->ajouterForce(PointF(0, -10));
    		else if (mBalle->GetVitesse().Y < 0)
    			mBalle->ajouterForce(PointF(0, 10));
    		}
    }

    la balle "rebondit" bien sur la barre qui se deforme.
    Le probleme : j'aimerai que l'intensité de la balle diminue, c'est à dire que au bout d'un certain temps, la balle ne rebondisse plus et s'arrete tout en deformant la barre (comme si la balle avait un poids)

    comme ca :



    et avec ce que j'ai : la balle ne s'arrete jamais, elle ralentit bien au début mais au bout d'un moment elle oscille sans jamais s'arreter.

    A noter que si je laisse rebondir la balle sur le sol, la balle rebondit comme une balle de tenis (pas d'utilisation de ajouter force et sans deformation bien sur)

    voilà je ne sais pas si j'ai bien expliqué mon probleme ?

    merci de votre aide

  12. #12
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Un peu comme la corde du haut ? (en imaginant qu'elle ne revient pas à sa position)



    Extrait de : Wikipedia (c'est sur les cordes vibrantes, pas exactement ce que tu souhaites, mais je pense que tu peux t'inspirer)
    Je ne répondrai à aucune question technique en privé

  13. #13
    Membre régulier
    Inscrit en
    Novembre 2002
    Messages
    291
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 291
    Points : 81
    Points
    81
    Par défaut
    oui comme le premier sauf que la corde ne remonte pas, elle revient à l'horizontal mais ca j'ai à peu pres reussi à le faire, maintenant j'ai une balle dessus qui "appuie" sur corde et je n'arrive pas à l'arreter cette balle comme sur mon image

  14. #14
    Membre éprouvé
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Points : 1 249
    Points
    1 249
    Par défaut
    Pour l'arrêter ça pourrait se faire en bloquant le mouvement quand la balle est au plus bas, cad quand la vitesse s'inverse. Et disons déclancher ça si elle arrive avec une vitesse inférieure à un sertain seuil. Il resterait à caser un amortissement dans un coin.

  15. #15
    Membre régulier
    Inscrit en
    Novembre 2002
    Messages
    291
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 291
    Points : 81
    Points
    81
    Par défaut
    eh ben c'est exactement ce que j'essaye de faire

  16. #16
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 524
    Points : 5 184
    Points
    5 184
    Par défaut
    si j'ai bien compris ce que tu veux alors de mon point de vue c'est une question de réponse comme dans tout système de détection de collision :
    - ta balle arrive sur la corde, la corde "absorbe" l'impact en se déformant
    - la corde répond en appliquant une force (la réponse) à ta balle
    - la force appliquée à la balle par la corde doit être inférieure à la force de la balle appliquée à la corde
    - les rebonds de la balle sur la corde seront de moins en moins forts jusqu'à s'arrêter
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  17. #17
    Membre régulier
    Inscrit en
    Novembre 2002
    Messages
    291
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 291
    Points : 81
    Points
    81
    Par défaut
    donc j'ai oublié qqchose apres mon ajouterForce dans la mise à jour de ma barre :

    en ce moment :

    - la balle arrive sur la corde
    - l'absorption est simulée par le "ajouterForce" qui vient "contrer" la gravité qui pousse ma balle vers le bas.
    - lorsque la force F appliqué par la corde est assez grande : la balle remonte : si la balle passe au dessus de la corde, je remet la force à 0 et la gravité refait son boulot !

    J'ai donc oublié, mal fait, quelques choses.... ???

    est ce que je ne devrais psa, au lieu de mettre ma force à 0 lorsqu'elle remonte et qu'elle depasse la barre, la faire diminuer petit à petit jusqu'a 0 ? ou est ce la gravité qui va s'en charger ?

  18. #18
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 524
    Points : 5 184
    Points
    5 184
    Par défaut
    pour te faciliter la vie, met tout le résonnement par écrit
    par exemple :

    la gravité attire ta balle vers le bas (à moins que tu la configure différemment )
    ta corde applique un vecteur force en fonction de sa tension
    ta balle applique un vecteur force relatif à sa direction et sa vitesse

    la balle arrive progressivement sur la corde, il y a collision, au début la corde a une tension de 0 (voire négative à cause de la gravité ?) donc ta balle descend encore à pleine vitesse

    "étape suivante" ta balle descend un peu et provoque une force sur la corde
    la corde voit sa tension augmenter
    mais la balle a encore une vitesse de descente non nulle

    la balle continue de descendre et de provoquer une force de plus en plus faible sur la corde car celle-ci applique une tension de plus en plus importante sur la balle qui est donc freinée

    il arrivera un moment où ta balle atteindra une vitesse nulle et ta corde va la repousser vers le haut
    la tension de la corde diminuera au fur et à mesure qu'elle fera accélérer la balle, jusqu'à ce que la corde ne puisse plus appliquer de force sur la balle

    bon courage
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  19. #19
    Membre régulier
    Inscrit en
    Novembre 2002
    Messages
    291
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 291
    Points : 81
    Points
    81
    Par défaut
    oui, d'accord avec toi, masi que ce passe t'il avec cette force, que la corde ajoute à la balle, quand la balle remonte? et que se passe t'il une fois que la balle n'est plus en contact avec la corde ?

    merci de ton aide

  20. #20
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 524
    Points : 5 184
    Points
    5 184
    Par défaut
    tu fais de la distribution des forces

    - la balle descend jusque la corde :
    la force de la balle est distribué à la corde lorsque la balle tombe, la balle perds de la force (elle la donne à la corde) pendant que la corde en gagne

    et inversement

    - une fois la force de la balle nulle :
    la force accumulée par la corde va être redistribuée à la balle, la balle va commencer à remonter sous l'effet de la force transmise par la corde et une fois que le contact sera perdu entre la corde et la balle, la balle va continuer de monter jusqu'à perdre sa force à cause de la gravité

    et on recommence

    si la distribution se fait avec pertes, ta balle rebondira de moins en moins haut et perdra de sa force avec le temps
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

Discussions similaires

  1. [Physique] Balle rebondissant sur un plan,problème de frames
    Par oxyde356 dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 16/02/2006, 18h11
  2. Rebond d'une balle sur un sol incliné
    Par franco01 dans le forum Algorithmes et structures de données
    Réponses: 18
    Dernier message: 05/02/2006, 01h20
  3. Rebond simple d'une balle
    Par Fiquet dans le forum Algorithmes et structures de données
    Réponses: 21
    Dernier message: 11/10/2005, 16h48
  4. Réponses: 2
    Dernier message: 05/08/2005, 09h21
  5. rebond balle plan
    Par Mat 74 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 30/05/2005, 22h41

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