Équations de Kepler

les fameuses équations appliquées à un jeu 2D

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour !

Alors voilà : depuis pas mal de temps déjà, je m'intéresse à l'astronautique, grâce aux jeux Kerbal Space Program et Simple Rockets (je vous conseille d'ailleurs d'y jetter un oeil si vous ne connaissez pas, ça vaut le coup !)

Ces jeux qui sont très réalistes et exigeants d'un point de vue physique, m'ont poussé à me renseigner sur ces mécaniques telles qu'elles s'appliquent en vrai, pour pouvoir progresser dans le jeu.

J'ai ainsi beaucoup appris, et j'ai eu le désir de créer moi-même un petit simulateur physique en 2D, dont voici un aperçu :

tout va bien

Mais un problème que j'ai très vite rencontré fut celui de la prédiction des orbites : comme vous pouvez le voir, la trajectoire du vaisseau ci-dessus est correctement prédite, il n'y a pas de problème. Seulement, la méthode que j'utilise actuellement est un peu "sale" : je calcule la position du vaisseau 10000 fois chaque frame (je ne suis plus sûr du nombre), avec un certain temps d'écart entre chaque position, puis j'utilise la mécanique Newtonienne pour déterminer la position suivante, je relie le tout, et hop ! ça marche !

… Ou pas ! Comme vous vous en doutez, cette techniques a des limites (beaucoup) : Déjà, une utilisation des ressources très importante, ensuite, la prédiction n'est pas toujours juste ou complète : lorsque l'on se raproche trop du corps autour duquel on orbite, la prédiction est faussée, et quand l'orbite est trop grande, la prédiction ne va pas "assez loin" :

C'est pour ça que j'ai envie de changer de méthode et d'utiliser les équations de Kepler (malheureusement, après des recherches, je n'ai pas tout compris), et j'aimerais savoir si il existe une formule qui, en fonction de la position et de la vitesse du vaisseau puisse me donner l'équation de l'ellipse de la trajectoire (et aussi qui puisse détecter quand la trajectoire est hyperbolique - quand l'eccentricité est supérieure à 1), ce qui m'éviterait les calculs fastidieux que mon pauvre programme se voit obligé d'effectuer. Voilà, merci d'avance !

P.S. : J'ai aussi posté ce message sur OC, désolé du double post (je sais pas si ça se fait ou si c'est pas correct de poster le même message sur deux forum… Vous me direz ?)

Quand un éléphant prend la défense d'un autre, est-ce de l'altruisme ou du vol ?

+1 -0

Quand j'avais appris la modélisation on utilisait la méthode d'Euler (ce que tu sembles faire) ou Runge Kutta (ordre 4). Essaie de voir peut-être pour cette dernière qui est censé être pas trop mal pour débuter (ou je me plante complètement ?)

ZdS, le best du Zeste ! Tuto Arduino, blog, etc

+1 -0
Staff

Cette réponse a aidé l'auteur du sujet

En principe le mouvement képlérien est résoluble analytiquement. Sur la page wiki y a tout un tas d'équations pour avoir l'expression analytique des solutions. C'est moche (normal, c'est de la physique :p) mais c'est exact.

edit : je vois sur OC que Sennacherib a très bien répondu à ta question ;)

Édité par Holosmos

Ce n’est pas en répétant « Hom, Hom », qu’on démontre des théorèmes sérieux - Siegel Mon Twitter

+1 -0
Staff

Le problème de Kepler, c'est que ça ne peut marcher que pour les planètes.

Si tu veux commencer avec des vaisseaux ou des astéroïdes, la dynamique de Newton avec Euler implicite ou Runge Kutta marche bien (je recommande le sujet qu'à pointé Rockaround !). Il faut cependant faire gaffe au pas, trop petit, c'est trop de calcul, trop gros, ça risque de ne pas être assez précis.

Hier, dans le parc, j'ai vu une petite vieille entourée de dinosaures aviens. Je donne pas cher de sa peau.

+0 -0
Staff

Je comprends pas ta remarque Gabbro.

Dans le mouvement képlérien on suppose qu'on a un corps de masse négligeable devant l'autre. Que ce soit une tasse à café ou une petite planète ça ne change rien.

Ce n’est pas en répétant « Hom, Hom », qu’on démontre des théorèmes sérieux - Siegel Mon Twitter

+0 -0
Auteur du sujet

Quand j'avais appris la modélisation on utilisait la méthode d'Euler (ce que tu sembles faire) ou Runge Kutta (ordre 4). Essaie de voir peut-être pour cette dernière qui est censé être pas trop mal pour débuter (ou je me plante complètement ?)> Quand j'avais appris la modélisation on utilisait la méthode d'Euler (ce que tu sembles faire) ou Runge Kutta (ordre 4). Essaie de voir peut-être pour cette dernière qui est censé être pas trop mal pour débuter (ou je me plante complètement ?)

Eskimon

En effet, j'utilise la méthode d'Euler, bien que jusqu'à présent j'ignorais qu'elle se nommait ainsi, et, tout comme Runge Kutta semble l'être, c'est une méthode au pas par pas, qui présente forcément des limites, comme l'a dit Gabbro, si le pas est trop petit, il y a trop de calculs, s'il est trop grand, la précision laisse à désirer. Et le problème, c'est que j'ai besoin d'une très grande précision ! En fait, je veux qu'après avoir fait le tour de son orbite plusieur centaines de fois, l'orbite d'un vaisseau reste identique au mètre près ! C'est pour ça que j'aimerais utiliser une méthode analytique :)

Merci à Holosmos et à Rockaround pour leur liens aussi, qui sont très utiles :) J'étais déjà tombé sur la page wiki du mouvement képlérien, mais pas sur ce sujet sur ZdS qui est très intéressant (même si à priori ce n'est pas ce que je veux faire, ça reste très interéssant :))

Le problème de Kepler, c'est que ça ne peut marcher que pour les planètes.

Gabbro

Tout comme Holsmos, je ne comprend pas ta remarque… La masse de l'objet qui orbite n'influe pas sur la trajectoire suivie par celui-ci si la masse reste négligeable face à celle de l'objet orbité ! (rectifie-moi si je me trompe) Un tournevis perdu par un membre de l'ISS aura la même trajectoire que l'ISS elle-même ! (sauf s'il est éjecté à toute vitesse de l'ISS )

Quand un éléphant prend la défense d'un autre, est-ce de l'altruisme ou du vol ?

+0 -0
Staff

sauf s'il est éjecté à toute vitesse de l'ISS

C'est le 1er problème : tu parles de vaisseau, donc j'imagine qu'à un moment, certains de tes objets vont avoir une vitesse propre (propulseur…).

Le second problème concerne les corps pour lesquels les attractions des autres corps ne sont pas négligeable (comètes, astéroïdes) qui peuvent passer très près de planètes, et donc être déviés.

Hier, dans le parc, j'ai vu une petite vieille entourée de dinosaures aviens. Je donne pas cher de sa peau.

+1 -0
Auteur du sujet

sauf s'il est éjecté à toute vitesse de l'ISS

C'est le 1er problème : tu parles de vaisseau, donc j'imagine qu'à un moment, certains de tes objets vont avoir une vitesse propre (propulseur…).

Le second problème concerne les corps pour lesquels les attractions des autres corps ne sont pas négligeable (comètes, astéroïdes) qui peuvent passer très près de planètes, et donc être déviés.

[Gabbro]

En effet, le vaisseau aura une accélération quand il utilisera ses réacteurs, mais à chaque fois qu'il va les utiliser, l'orbite sera recalculée suivant les nouveaux paramètres, et quand il ne l'utilisera pas (autant dire presque tout le temps), on se sert de l'orbite que l'on a calculée avant.

Et quant aux comètes, elles ne poseront pas de problème, car il n'y en aura pas :) Et même s'il y en avait, j'utiliserais un système de sphère d'influence, comme avec les autres planètes, pour simplifier les calculs. De plus le mouvement des autres planètes sera scripté et leurs orbites prédéfinies.

Oui mais là il s'agit d'une simulation où on ne garde qu'un gros corps (le Soleil en l'occurence).

[Holosmos]

Pas vraiment. Il y aura plusieurs planètes, mais comme dans le jeu KSP, les mouvements des planètes seront déterminés, et on ne prendra en compte l'attraction d'un seul corps à la fois - dans le fond, ça rejoint ce que tu dis, donc je chipote pour pas grand-chose :)

En fait, la seule chose que l'on simule vraiment en temps réel, c'est le comportement du vaisseau. Le reste est déjà calculé, et tout est fait en sorte pour que ça marche :)

Quand un éléphant prend la défense d'un autre, est-ce de l'altruisme ou du vol ?

+0 -0
Staff

KSP c'est un super jeu au passage <3

Je regrette juste que ce soit pas exactement le système solaire, les ordres de grandeurs sont un peu différents.

Mais dans ta simu là, je vois que le Soleil.

Après je pense que le moteur du jeu KSP fonctionne avec un calcul numérique assez précis pour calculer le trajectoire à l'instant suivant, mais pour visualiser ils doivent se contenter d'une bonne approximation avec les sphères d'influence.

Ce n’est pas en répétant « Hom, Hom », qu’on démontre des théorèmes sérieux - Siegel Mon Twitter

+1 -0
Auteur du sujet

Mais dans ta simu là, je vois que le Soleil.

Ouaip c'est une ancienne version mais c'est la plus présentable je trouve ; les orbites sont à peu près correctes, alors que la nouvelle version est plus complète, mais plus moche :

Simulateur spatial

(bon là on voit que la terre, mais y'a aussi une lune et un soleil)

KSP c'est un super jeu au passage <3

Je regrette juste que ce soit pas exactement le système solaire, les ordres de grandeurs sont un peu différents.

Je suis bien d'accord, c'est un super jeu :) Pour les ordres de grandeur, ce lien ainsi que celui-ci devraient faire ton bonheur ;) (Bon c'est un peu moins intuitif que KSP par contre)

Pour ma part j'aime bien le côté "petites planètes" du système Kerbolaire ;)

Édité par Sami

Quand un éléphant prend la défense d'un autre, est-ce de l'altruisme ou du vol ?

+0 -0
Auteur du sujet

grâce à des réponses postées sur OC, sutout celles de Sennacherib, j'ai pu franchir une étape et réaliser ce programme qui donne en fonction de la vitesse initiale et de la position, l'équation de l'orbite :D :

Image utilisateur

Image utilisateur

Par contre il me reste encore à gérer le cas où l'orbite est hyperbolique (quand l'excentricité est supérieure à 1), mais après ce sera bon ^^

En tout cas merci à tous pour vos réponses :)

Quand un éléphant prend la défense d'un autre, est-ce de l'altruisme ou du vol ?

+0 -0
Auteur du sujet

Bon, ce sujet et maintenant résolu puisque j'ai atteint mon objectif (grâce aux réponses de Sennacherib sur OC), encore merci à tous !

Bon par contre c'était bizarre de poster sur deux forums en même temps !

Je ne le ferai plus du coup :s

Quand un éléphant prend la défense d'un autre, est-ce de l'altruisme ou du vol ?

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte