Partage
  • Partager sur Facebook
  • Partager sur Twitter

déviation rebond de collision

Anonyme
    6 novembre 2011 à 14:24:36

    Bonjour à tous,

    Maintenant que je sais calculer la distance en 2 points, je peux continuer mon projet.

    Voici mon projet:
    2 cercles (ou balles) qui bougent dans une fenêtre.
    J'ai gérer la collision et le rebond contre les murs, maintenant me reste contre les balles.

    J'aimerai donc avoir des idées pour gérer le rebond de la collision entre 2 cercles (suivant leur direction, et de là où elles se touchent).

    Merci
    • Partager sur Facebook
    • Partager sur Twitter
      6 novembre 2011 à 14:47:04

      La gestion de collision entre 2 cercles est le plus simple (surtout que tu sais maintenant comment calculer la distance entre 2 points). Il suffit de regarder la distance entre les 2 centres de tes cercles et de comparer avec la somme des rayons des deux cercles. Fais un petit dessin.
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        6 novembre 2011 à 14:51:23

        désolé oublier de parler de rebond.
        ça je sais. Je parle du rebond.. ahhh là c'est plus dur! hein? ;)
        • Partager sur Facebook
        • Partager sur Twitter
          6 novembre 2011 à 16:35:48

          oui mais c'est pas insurmontable, comment gère tu le déplacement de tes sphères, avec des vecteurs déplacement ?
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            6 novembre 2011 à 17:03:20

            avec une direction par exemple:
            si d=1 alors x=x+1 et y=y+1
            • Partager sur Facebook
            • Partager sur Twitter
              6 novembre 2011 à 18:29:53

              en gros donc t'a des vecteurs <math>\(\begin{pmatrix}x \\y\end{pmatrix}\)</math> et <math>\(\begin{pmatrix}u \\v\end{pmatrix}\)</math> qui correspondent à des déplacement par unité de temps, t'a le centre de tes cercles qui ont certaines coordonnées genre <math>\(\begin{pmatrix}x_0 \\y_0\end{pmatrix}\)</math> et <math>\(\begin{pmatrix}u_0 \\v_0\end{pmatrix}\)</math> tu prend le vecteur qui va d'un centre à l'autre : <math>\(\begin{pmatrix}x_0-u_0\\y_0-v_0\end{pmatrix}\)</math> tu le norme : <math>\((\frac{1}{(x_0-u_0)^2+(y_0-v_0)^2})\begin{pmatrix}x_0-u_0\\y_0-v_0\end{pmatrix}\)</math>, on nomme ce nouveau vecteur <math>\(v=\begin{pmatrix}a\\b\end{pmatrix}\)</math>
              maintenant tu fais <math>\(\begin{pmatrix}x\\y\end{pmatrix}=\begin{pmatrix}x\\y\end{pmatrix}+2\times\begin{pmatrix}a\\b\end{pmatrix}.\begin{pmatrix}x\\y\end{pmatrix}\times\begin{pmatrix}a\\b\end{pmatrix}\)</math>
              et : <math>\(\begin{pmatrix}u\\v\end{pmatrix}=\begin{pmatrix}u\\v\end{pmatrix}+2\times\begin{pmatrix}a\\b\end{pmatrix}.\begin{pmatrix}u\\v\end{pmatrix}\times\begin{pmatrix}a\\b\end{pmatrix}\)</math>
              • Partager sur Facebook
              • Partager sur Twitter
                6 novembre 2011 à 19:08:18

                Dites, vous m'arrêtez si je dis une bêtise, mais une boule ne rebondit-elle pas sur un autre de la même manière qu'elle rebondirait sur un mur selon la tangente commune aux deux cercles ? (figure ci-dessous) Je n'en suis pas intimement convaincu, mais c'est à étudier (en fait ce qui me chiffonne, c'est que finalement la direction de la deuxième boule n'intervient pas, mais après tout pourquoi pas ...)

                Rebond boule sur boule

                Si ce que je dis s'avère correct, et si l'auteur du sujet a déjà programmé le rebond d'une boule sur un mur, il peut s'en servir pour le cas du rebond d'une boule sur un autre (à moins qu'il n'ait programmé le rebond sur un mur que pour les murs "horizontaux" et "verticaux", auquel cas il lui faudra d'abord généraliser à un mur de direction quelconque).
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  6 novembre 2011 à 19:15:17

                  en effet, tu dis juste.

                  je n'ai que programmer dans une direction de 45°.
                  Donc quand une balle va en frapper une autre, la direction va changer et elle ne sera plus en 45° (comme une croix : de 0;0à30;30 ou 30;30à0;0 ou 0;30à30;0 ou 30;0à0;30)
                  Il me faut donc trouvé un algorithme pour le changement de direction suivant la direction. (je pense que ça va être simple)
                  Mais le problème, c'est pour balle contre balle! et là... :-°
                  Je réfléchirai demain en cours :euh: comment faire.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    6 novembre 2011 à 19:26:33

                    et ma réponse tu t'en fous ^^
                    en fait mon algo correspond à ça : on prend un vercteur orthogonale à la tangente, puisque c'est selon cette direction que la vitesse varie
                    et orhtogonal au plan tangent c'est la direction de la droite droite passant par les 2 centres
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      6 novembre 2011 à 19:30:33

                      Non! pas du tout! d'ailleurs merci :)
                      Mais c'est juste que.. c'est un peut incompréhensible sans le décortiquer, et c'est trop "haut niveau" c'est-à-dire que c'est trop "utilisé sans comprendre.
                      Bref, je ne peux pas juger sans y avoir travaillé auparavant.
                      Je vous tiendrai au courant de mon avancé demain.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        6 novembre 2011 à 19:33:55

                        tu connais les produit scalaire ?
                        parce que c'est le truc le plus haut niveau du coup c'est pas non plus incompréhensible
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Anonyme
                          6 novembre 2011 à 19:37:04

                          justement je veux un truc de bas niveau (comme pour les langages de programmation)
                          Les trucs de haut niveau, tu comprends sans comprendre réellement.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            6 novembre 2011 à 19:39:56

                            comment ça comme pour les languages de prog ? moi je pensais que tu voulais le moyen mathématiques de le faire pas le code tout pondu
                            désolé je n'avais pas compris
                            EDIT : tu emplois les terme de language haut et bas niveau d'une façon que je ne comprends pas
                            ensuite soit tu veux la théorie mathématiques (que je t'ai donnée et qui est pas complique : c'est niveau produit scalaire) soit tu veux un truc tout fait auquel cas tu prends le temps de trouvé un "moteur physique"
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Anonyme
                              6 novembre 2011 à 19:43:27

                              langage haut niveau = truc tout pondu.
                              langage bas niveau = par exemple le binaire.

                              Lol non, on s'est bien compris :)

                              EDIT: ok le code pour ce soir je veux bien, merci

                              • Partager sur Facebook
                              • Partager sur Twitter

                              déviation rebond de collision

                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                              • Editeur
                              • Markdown