Partage
  • Partager sur Facebook
  • Partager sur Twitter

Calculer la trajectoire d’une balle (d’arme à feu)

Formule pour calculer toutes les positions de la munition

Sujet résolu
    18 juin 2022 à 13:41:47

    Bonjour,


    Mon GO approchant, j’ai oublié de trouver une source confirmant cette « formule ». 

    Contexte: Je joue à un FPS, et je tire avec mon arme. Le jeu doit donc calculer toutes les positions de la balle tirée pour voir si je touche quelque chose. Et je voudrais justement une formule générale du triplet de coordonnées de la balle, en supposant qu’elle ne retombe pas (comme dans CSGO). 

    Pour ça, je pars du principe qu’on connaît deux angles, qui permettront de caractériser tous les tirs possibles. On les appellera alpha et bêta. Ce sont les équivalents de la longitude et la latitude sur la Terre, puisqu’on peut faire une bijection entre chaque tir possible et chaque point d’une sphère centrée sur le tireur, par lequel passera la balle. Vous vous en doutez, on peut faire la même bijection avec une infinité de sphères de rayons différents, centrés sur le tireur. L’ensemble de ces points appartiendra à une droite qui est la trajectoire de la balle.

    Et mon but est donc d’avoir ma formule, exprimée en fonction de mes deux angles et d’une variable qu’on incrémente qui correspond à la distance entre la balle et l’origine du repère (le tireur).

    Pour ça j’avais imaginé utiliser la trigonométrie dans un triangle rectangle sur les plans de chacun des deux angles, en projetant la trajectoire sur ces plans, en prenant l’axe x des abscisses comme côté adjacent des deux triangles rectangle. Je me suis rendu compte que les deux cosinus (indiquant la coordonnée x donc) ne fonctionnaient pas: ils étaient différents, et avec une telle configuration, la coordonnée x dépend en fait des angles alpha et bêta en même temps, ce qu’on ne peut pas prendre en compte en faisant le cosinus d’un seul angle. Contrairement aux coordonnées y et z, qui se calculent par respectivement les sinus de bêta et de alpha, puisque ces coordonnées ne dépendent que d’un angle. 

    Bref cela nous donne B(?; r*sin(bêta);r*sin(alpha))

    Avec B notre balle, et r la distance entre la balle et l’origine du repère.

    Pour trouver l’abscisse x, j’utilise donc le théorème de Pythagore mais en 3D.

    La distance entre un point M et l’origine du repère O est:

    OM=racine carrée de (X^2 + Y^2 + Z^2)

    (^2 = au carré)

    Donc ça nous donne:

    X= racine carrée de (OM - Y^2 - Z^2)

    Et en remplaçant on obtient donc:

    x = racine carrée de (r^2 - r^2*sin^2(bêta) - r^2*sin^2(alpha))

    Et donc j’arrive sur ma formule générale:

    B(r^2 - r^2*sin^2(bêta) - r^2*sin^2(alpha); r*sin(bêta); r*sin(alpha))

    Si on suppose qu’un angle est égal à 0, x correspond bien au cosinus de l’autre angle (petite vérification de la cohérence).

    Donc ma question est donc: Pouvez-vous me confirmer que la formule est correcte, et est-elle ou a-t-elle été utilisée en développement de jeu vidéo (du type CSGO) pour calculer des trajectoires de tir?

    (J’aimerais préciser, j’ai déjà tenté de faire des recherches, mais je n’arrive pas vraiment à trouver, car je n’obtiens pas les résultats qui m’intéressent, sûrement car je ne connais pas le vocabulaire qui correspond à ma question, je ne suis qu’en terminale).

     Merci de vos réponses.

    -
    Edité par Esoxy 20 juin 2022 à 12:06:48

    • Partager sur Facebook
    • Partager sur Twitter
      23 juin 2022 à 18:18:51

      J’ai obtenu mes réponses, je n’ai plus besoin que quelqu’un me réponde. Je mets donc le sujet en résolu.
      • Partager sur Facebook
      • Partager sur Twitter

      Calculer la trajectoire d’une balle (d’arme à feu)

      × 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