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.
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.
tout ce qui est simple est faux, tout ce qui est compliqué est inutilisable
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
Mon projet amateur Dangerous Fall , un jeux mobile sur iOS et android
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
tout ce qui est simple est faux, tout ce qui est compliqué est inutilisable
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
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) :
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 !
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 !
Mon projet amateur Dangerous Fall , un jeux mobile sur iOS et android
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) \)
Mon portfolio photo : https://www.instagram.com/charlievanaret_photo/