Partage
  • Partager sur Facebook
  • Partager sur Twitter

Calcul d'un angle de trajectoire

22 septembre 2016 à 11:11:48

Bonjour à tous

Depuis quelques temps je suis bloqué sur un calcul d'angle d'une trajectoire d'un projectile.

Je cherche à déterminer l'angle alpha en connaissant le point de départ, le point d'arriver et la vitesse initiale du projectile

Voici la formule pour trouver la distance parcouru en fonction des autres paramètres : 

d={\frac  {v\cos \theta }{g}}\left[v\sin \theta +{\sqrt  {\left(v\sin \theta \right)^{2}+2gy_{0}}}\right]

d: distance
0: angle téta
v: vitesse
g: gravité 
y0: hauteur de départ 

mais comment déterminer l'angle en connaissant les autres paramètres ?

Merci d'avance !

  • Partager sur Facebook
  • Partager sur Twitter
Mon projet amateur Dangerous Fall , un jeux mobile sur iOS et android
22 septembre 2016 à 13:51:14

Bonjour, 

Pour commencer, il y a beaucoup plus simple que de réutiliser cette formule. Par contre, je ne sais pas si votre ex impose l'utilisation de cette formule. Je ne sais pas quel est votre niveau, je reprends tout depuis le début. Les problèmes de projectiles en mécanique du point doivent être résolu de manière paramétrique, ce qui veut dire que l'on ne doit pas exprimer y(x) mais y(t) et x(t). En y, nous avons une force(la gravité) qui s'applique, nous avons donc une accélération. Par intégration : vy(t) = S a(t) dt  = -g*t + v0. On obtient y(t) = S vy dt = -(1/2)*gt^2 + v0y +h. Par x, aucune force ne s'applique, donc a = 0, et par le même calcul intégral on obtient x(t) = vx*t(+x0) mais x0 vaut 0 dans ce cas-ci. Il faut comprendre ici que x(t) et y(t) sont des normes des vecteurs vitesses. 

Pour la résolution du problème proprement dit, on peut connaitre le temps T qu'il faut au projectile pour toucher le sol. Par l'équation y(t)= 0, on résout une équation du second degré en t, qu'on injecte dans x(t), on a donc  : Xcontact  = vx* T. Maintenant, on décompose le vecteur vitesse totale en 2 : vitesse horizontale et vitesse verticale. Cependant, ce que nous avons calculé précédemment était la norme des vecteurs. Or, si on observe la décomposition du vecteur vitesse totale, on remarque que cela forme un triangle rectangle, avec l'angle alpha entre le vecteur vitesse totale et horizontale. Comme les normes sont des scalaires, on peut utiliser les relations cosins : cos alpha = vx/vtot. 

  • Partager sur Facebook
  • Partager sur Twitter
22 septembre 2016 à 15:19:20

quelle que soit la façon de traiter la mise en équation du   problème, les données de départ étant \(d, v_0\),on va de toute façon  tomber, sous une forme ou une autre  , à la relation indiquée au départ entre l'angle et la portée \(d\).

( attention aux confusions de notations, \(y_0\) dans la formule c'est \(h\) sur le dessin, et \(z,y\) sur le graphique , c'est a priori \(y,x\) dans le post de Olivier 1460 ; il y a aussi une erreur de frappe dans l'équation de \(y(t)\) , c'est pas\( v_0 y \) mais \(v_0 t\)  )

Le calcul explicite de \(\theta\) connaissant \(d\) et \(v_0\) n'est simple que si \(y_0=0\) auquel cas la relation se simplifie facilement en \(d=\dfrac{v_0^2}{2g}\sin 2\theta \).

Sinon je ne crois pas que la relation entre \(d\) et \(\theta\) soit résoluble analytiquement et il faut en passer par un  calcul numérique de l'angle, quelle que soit ma méthode employée.

  • Partager sur Facebook
  • Partager sur Twitter
tout ce qui est simple est faux, tout ce qui est compliqué est inutilisable
22 septembre 2016 à 16:30:34

Merci pour votre aide cependant je n'arrive toujours pas à la formule souhaité : alpha = une formule savante avec la distance, la hauteur, la gravité et la hauteur initiale.

J'ai compris que la formule est cos(alpha) = (Xcontact / T) / vtot. Or pour connaitre T, il faut résoudre y(t) = 0.

Ce que je ne comprend pas dans l'explication comment on résout y(t) = 0 car dans la formule on utilise v0t qui correspond à v*sin(alpha). On aurait donc besoin de l'angle alpha pour résoudre l'équation si je ne me trompe pas alors que c'est ce que l'on cherche. 

Sennacherib, je cherche en fait la formule qui permet de connaitre l'angle pour ensuite programmer une trajectoire d'un objet. Peut-être qu'il y a un autre moyen de trouver l'angle en programmation ? 

Si la hauteur de départe était nulle, ce serait trop facile ;) 

-
Edité par chero7 22 septembre 2016 à 16:51:55

  • Partager sur Facebook
  • Partager sur Twitter
Mon projet amateur Dangerous Fall , un jeux mobile sur iOS et android
22 septembre 2016 à 17:37:52

oui, j'ai compris ce que tu cherches .... :)...et tu ne l'obtiendras pas!

 sauf effectivement  lorsque la hauteur de départ est nulle c'est le seul cas , à mon avis,  où on peut de façon simple obtenir une fonction analytique  \(\theta=f(d)\). Quelle que soit la façon de "tourner" autour de la question, la relation que tu as donnée ne pas se transformer miraculeusement par une autre méthode  pour obtenir quelque chose de simple.

je pense que ta remarque est juste sur ce que propose Olivier1406 . 

En fait l'équation indiquée donne l'altitude z(t)  en fonction du temps ( équation du second degré) , et le mouvement horizontal y ( avec tes notations) est  lui uniforme, on a  \(y(t)=(v_0 \cos \theta) t \) On calcule le temps pour \(y(t)=d\)  qui est le temps pour lequel \(z(t)=0\) d'où la relation entre \(d\) et \(\theta\) qui apparaît comme une équation du second degré en \(d\)...( d'où la racine dans la formule , issue du discriminant de l'équation du second degré  en \(d\))   ...on n’échappe pas à cette relation peu sympathique de ton post de départ.

 Seule solution à mon avis : écrire dans ton  programme un sous-programme de résolution de cette équation en \(\theta\) 

-
Edité par Sennacherib 22 septembre 2016 à 17:45:15

  • Partager sur Facebook
  • Partager sur Twitter
tout ce qui est simple est faux, tout ce qui est compliqué est inutilisable
22 septembre 2016 à 22:46:30

Bonsoir, 

Merci pour les corrections de mes erreurs. Je comprends ce vous voulez en lisant le fil de la conversation. En effet, le problème est impossible à résoudre à la main. Cependant, on peut se tourner vers les méthodes numériques pour résoudre une équation non linéaire. On peut citer la méthode de Newton-Raphson qui est une méthode itérative. Cette méthode à un ordre de convergence quadratique (ce qui signifie qu'elle trouve assez rapidement la solution) mais il faut déjà avoir une estimation de la solution au départ, sinon la méthode ne converge pas. On peut aussi cité la méthode de bissection qui a un ordre de convergence linéaire (se rapproche lentement de la solution) mais converge toujours. Il y a la méthode du point fixe aussi. Connaissez- vous les méthodes num? En soit, ce genre d'approximation est souvent utilisé en programmation, car elle implique des boucles qui sont très efficaces en c, c++, java.  Si cela vous intéresse, je peux vous expliquer comment la méthode de votre choix fonctionne. 

PS : quand je dis lentement, c'est relatif... Pour ce genre de fonction, on ne devrait pas voir de différence. 

-
Edité par Olivier1406 23 septembre 2016 à 14:50:04

  • Partager sur Facebook
  • Partager sur Twitter
23 septembre 2016 à 18:23:45

Pour rester le plus proche de l'équation donnée par Sennacherib, je prendrais la formule suivante (équivalente à la formule donnée initialement par chero7) :

\( d = \dfrac{v_0^2}{g} \cdot \sin 2\theta \cdot \dfrac {1 + \sqrt{1+\dfrac{2gh}{v_0^2\sin^2\!\theta}}}2 \)

Quoi qu'il en soit, il ne faut pas oublier que selon la portée \(d\) souhaitée et en fonction de la vitesse \(v_0\) et de la hauteur initiales \(h\), il peut y avoir 0, 1 ou 2 solutions !

  • Partager sur Facebook
  • Partager sur Twitter
26 septembre 2016 à 18:16:06

Bonjour

Excuser moi pour le retard mais j'ai finalement mis en place une autre solution : J'ai décidé de fixer l'angle et de calculer la puissance en fonction. Voici la formule que j'ai trouvé : 

Merci !

  • Partager sur Facebook
  • Partager sur Twitter
Mon projet amateur Dangerous Fall , un jeux mobile sur iOS et android
27 septembre 2016 à 21:39:31

Sennacherib a écrit:

Sinon je ne crois pas que la relation entre \(d\) et \(\theta\) soit résoluble analytiquement et il faut en passer par un  calcul numérique de l'angle, quelle que soit ma méthode employée.

Je crois que c'est possible de faire le calcul analytiquement…

\( d = \dfrac{v_0^2}{g} \sin\theta\cos\theta \left(1 + \sqrt{1+\dfrac{2gh}{v_0^2\sin^2\theta}}\right) \)

\( \left( \dfrac{dg}{v_0^2\sin\theta\cos\theta} - 1 \right)^2 = 1+\dfrac{2gh}{v_0^2\sin^2\theta} \)

\( \dfrac{d^2g^2}{v_0^4\sin^2\theta\cos^2\theta} - \dfrac{2dg}{v_0^2\sin\theta\cos\theta} = \dfrac{2gh}{v_0^2\sin^2\theta} \)

\( \dfrac{d^2g}{v_0^2\cos^2\theta} - \dfrac{2d\sin\theta}{\cos\theta} = 2h \)

Si on pose \( X = \dfrac1{\cos^2\theta} \), alors on a :

\( \dfrac{d^2g}{v_0^2}X - 2d\sqrt{X-1} = 2h \)

\( \left( \dfrac{d^2g}{v_0^2}X - 2h \right)^2 = 4d^2(X-1) \)

\( \dfrac{d^4g^2}{v_0^4}X^2 -4d^2\left(\dfrac{hg}{v_0^2} + 1\right)X + 4(h^2 + d^2) = 0 \)

Bon, et là c'est une équation du 2e degré et ça devient vraiment horrible à écrire, mais c'est possible… ^^

-
Edité par Me Capello 27 septembre 2016 à 21:54:20

  • Partager sur Facebook
  • Partager sur Twitter
28 septembre 2016 à 12:21:19

Exact. On peut poser aussi \(X = \tan \theta\), et ça donne une expression un peu moins lourde :)
J'obtiens quelque chose comme :

\(\tan \theta = \dfrac{v_0^2}{dg} \left( 1 \pm \sqrt{1 - \dfrac{d^2g^2}{v_0^4} + \dfrac{2gh}{v_0^2} } \right) \)

En tout cas c'est homogène :p

-
Edité par cvanaret 28 septembre 2016 à 12:26:27

  • Partager sur Facebook
  • Partager sur Twitter
28 septembre 2016 à 15:17:15

Effectivement, c'est plus léger avec \(X = \tan\theta\) étant donné que \(\dfrac1{\cos^2\theta} = 1+\tan^2\theta\).
  • Partager sur Facebook
  • Partager sur Twitter