Aller au contenu

Calculer la position de planètes sur une orbite circulaire uniforme


Messages recommandés

Posté

Bonjour,

Je suis actuellement en Terminal et passionné par la mécanique des mouvements et d'informatique. C'est dans ce contexte que je me suis donnée comme petit défi de réussir à faire "graviter" une planète autour du Soleil dans une orbite parfaitement circulaire. Je sais que le modèle n'est absolument pas exact, mais je préfère commencer simple.

 

Je voulais donc savoir comment est-ce que je peux déterminer la position x et y de chaque planète ? Pour le moment, j'enregistre le rayon de la planète et son altitude (en pixel) mais j'imagine que pour déterminer x et y il va me falloir la constante de gravitation et la masse de la Terre. Seulement je ne sais pas trop par où commencer. Je peux déterminer la position en y en résolvant une simple équation de cercle mais il faut x afin de la résoudre...

 

J'espère vous avoir fourni tous les détails que vous pourriez avoir besoin pour la compréhension de mon projet.

Merci beaucoup de votre aide. :)

Posté

Bonjour

 

Bravo pour ce projet ! Méfie toi quand même, une fois que tu auras commencé, tu auras du mal à t'arrêter pour faire tes révisions :be:

 

A mon avis (et expérience faite ;) ) le plus simple pour obtenir ce que tu veux est de faire le calcul en écrivant :

x = R cos(ωt) y = R cos (ωt) ( ω étant la vitesse angulaire ω = V / R )

 

Comme ça, tu fais varier le paramètre t et tu es tranquille !

 

Newton et les relations habituelles te donnent la vitesse V sur l'orbite circulaire en fonction de la masse du Soleil et du rayon de l'orbite : ça, c'est à savoir pour le Bac :p

 

Un conseil : fais tout ton calcul en unités SI et convertis en pixels seulement à la fin.

Une autre possibilité bien plus simple : tu fais un tableau Excel qui te calcule automatiquement toutes les valeurs et qui transforme le tout en graphique :D

Là encore, expérience faite, c'et bien plus sympa : tu "lances" une planète où tu veux, avec la vitesse que tu veux, et tu vois comment elle se comporte :wub:

 

Une suggestion : tu peux mettre quelques mots pour te présenter dans le fil prévu pour cela, c'est la rubrique "présentation" :p

 

A suivre...

 

Signé : un vieux hibou qui a fait ça avec ses élèves de Terminale, il y a... quelques années :rolleyes:

Posté

Merci de ta réponse Ygogo et pour tes encouragements !

Pour mes révisions, ne t'en fais pas trop, mes concours (pour l'IPSA) me permettent de réviser en même temps ! ;)

 

Effectivement c'est un peu plus simple avec ces formules, je vais regarder ça de plus près (je ne connaissais pas cette vitesse angulaire :p ).

 

Justement, je voulais partir sur des unités SI pour commencer mais je me suis rapidement rendu compte que les convertir en pixels va me donner des résultats disproportionnés. Par exemple, voici comment est définie ma Terre :

 

   earth = {
       radius = 5,
       color = { 52, 152, 219 },
       altitude = 100
   }
   earth.position = {
       x = (game.width / 2),
       y = (game.height / 2) - earth.altitude
   }

(C'est du Lua, j'utilise LÖVE comme moteur pour rendre le tout)

Comme tu peux le voir, earth.radius et earth.altitude ("altitude" par rapport au Soleil) sont en pixels car si je les mets en SI et que je converti en pixels, j'ai moyen d'avoir une terre avec une taille correct pour mon écran mais qui sera hors de l'écran (la distance Terre-Soleil était beaucoup trop importante). C'est pour ça que je suis parti sur du pixel directement.

 

Pour le moment, voici ce que j'ai (comme tu le vois, l'échelle c'est du grand n'importe quoi mais je sais vraiment pas comment régler ce problème d'unités) :

1461652662.png

 

Je vais suivre ton conseil, partir sur un tableau Excel pour commencer et jouer avec les formules et après je coderais tout ça au propre dans le moteur de jeu.

 

Je vais me présenter de ce pas alors !

 

Merci à toi pour ton aide, à suivre comme tu dis... ;)

Posté

Tu es en terminale et tu ne connais pas les vitesses angulaires ? Bizarre bizarre...

 

Il est évident que pour voir les planètes sur ton écran, il te faudra adopter une échelle pour les distances et une autre pour les diamètres. Ça ne t'empêche pas de tout calculer en SI et de convertir à la fin en pixels. Ça sera même plus simple dans le cas pù tu veux zoomer ou adapter la taille de la fenêtre à l'écran.

 

Toutes les constantes et données planétaires sont disponibles sur Internet, par exemple sur Wikipédia. Il ne sera pas plus compliqué de programmer directement des orbites elliptiques que des orbites circulaires. Ce ne sont que des formules avec des sinus et des cosinus.

 

Au fait, qu'appeles tu "altitude par rapport au Soleil" ?

Posté

Pas si bizarre que ça, dans mes livres de physiques et dans mes livres de révisions du programme de Terminale S, aucun ne fait mention d'une vitesse angulaire. ;)

 

Ajouté à ma Todo list, j'aurais donc deux échelles (et pourquoi pas un bouton pour passer sur une échelle :D ). Pas bête, fin pour le zoom j'ajouterais ça quand j'arriverais à faire au moins orbiter une planète autour du soleil.

 

Je commence par les circulaires, pas que ce soit plus simple mais c'est surtout plus propre et c'est ce qu'on étudie en cours (après je sortirais du contexte et j'irais plus loin car je trouve que le programme de Terminale S ne va pas assez loin en Physique contrairement à la Chimie (et j'aime pas la chimie :be: )).

 

J'appelle altitude par rapport au soleil le rayon de l'orbite de la planète, c'est à dire la distance "centre du soleil - centre de la terre".

Posté (modifié)

Bigre. Pourtant dans le programme je lis :

 

Mouvement d’un satellite. Révolution de la Terre autour du Soleil

Démontrer que, dans l’approximation des trajectoires circulaires, le mouvement d’un satellite, d’une planète, est uniforme. Établir l’expression de sa vitesse et de sa période.

 

Lois de Kepler

Connaître les trois lois de Kepler ; exploiter la troisième dans le cas d’un mouvement circulaire.

 

Mesure du temps et oscillateur, amortissement

Pratiquer une démarche expérimentale pour mettre en évidence :

- les différents paramètres influençant la période d’un oscillateur mécanique ;

- son amortissement.

 

Faire tout ça sans aborder la notion de vitesse angulaire, c'est comme vouloir faire du cidre sans parler des pommes ! Les profs doivent bien s'arracher les cheveux pour respecter de telles absurdités. Que les ministres de l'ÉN et leurs pédagogues à la con s'occupent de leurs placements à Panama plutôt que de rabaisser nos enfants au niveau de simplets avec leurs réformes lobotomisantes !

 

PS : Wizix, utilises s'il te plaît la bonne terminologie. Altitude désigne l'élévation (angulaire, ou longueur) d'un point au dessus d'un horizon ou d'un plan. Dans ton cas, parle simplement de distance héliocentrique (si ton référentiel est le centre du Soleil) ou géocentrique (si ton référentiel est le centre de la Terre), c'est le terme adapté.

Modifié par Fred_76
Posté

Et pourtant faut croire qu'ils connaissent la recette du cidre sans pommes, car c'est effectivement ce que l'on fait.

En fait, quand ils disent qu'il faut connaître les trois lois de Kepler, c'est... juste de les connaître, mais pas d'utiliser des formules avec sauf pour la troisième évidemment (que je n'ai utilisé que dans un seul exercice).

 

Ensuite pour les oscillateurs c'est encore plus simple. Nous apprenons la formule de la période et... C'est tout. Différent termes tels que l'écart angulaire apparaissent mais pas de vitesse angulaire.

 

PS : Wizix, utilises s'il te plaît la bonne terminologie. Altitude désigne l'élévation (angulaire, ou longueur) d'un point au dessus d'un horizon ou d'un plan. Dans ton cas, parle simplement de distance héliocentrique (si ton référentiel est le centre du Soleil) ou géocentrique (si ton référentiel est le centre de la Terre), c'est le terme adapté.

 

Je parlerais désormais de distance héliocentrique. Merci de ces mots de vocabulaire. :)

Posté

Newton et les relations habituelles te donnent la vitesse V sur l'orbite circulaire en fonction de la masse du Soleil et du rayon de l'orbite : ça, c'est à savoir pour le Bac :p

 

Ca c'était au programme du Bac ... il y a quelques années ... visiblement le Bac d'aujourd"hui se contente juste des 4 opérations :cry: (et encore, avec une calculatrice).

Posté

Mode Hors sujet ON/

Je dois reconnaître que je n'ai pas cherché à savoir ce que proposaient les réformes qui se sont succédées depuis que je suis en retraite.

Je n'ai pas non plus compté le nombre de réformes promulguées pendant mes 40 années d'enseignement...

Mode Hors sujet OFF/

 

Pour éviter de faire partir en vrille ce sujet, je propose de le recentrer sur les questions de notre jeune ami, sans jugement sur ce qu'il sait ou ce qu'il devrait savoir. :p

Posté (modifié)

Re !

J'ai récupéré quelques données pour la Terre notamment sa distance héliocentrique, sa vitesse et son rayon. Soit 149 000 000 km pour la distance héliocentrique, une vitesse moyenne de 29.783 km/s et un rayon moyen de 6371 km. Ce qui me donne une vitesse angulaire de 0.0046747763302464 rd/s (j'ai crû comprendre que c'était en radian par seconde.. Ce qui me parait bizarre car divisant des km/s par des km, je devrais avoir des [tex]s^{-1}/tex] ).

 

Ce qui me fait comme calculs :

earth.position.x = earth.position.x + (earth.radius * math.cos(earth.angular_speed * dt))
earth.position.y = earth.position.y + (earth.radius * math.cos(earth.angular_speed * dt))

Le problème, c'est que ma Terre ne tourne pas, elle me dessine une belle ligne droite. :(

 

Merci de votre aide ! :)

Modifié par Wizix
Posté

Salut, je suis loin d'être une tête en maths, mais je fais un peu de programmation, je vois pas pourquoi tu incrémente sur la position existante de la planète tu devrais essayer un truc du genre :

 

angle = angle + angular_speed * dt
earth.position.x = math.cos(angle) * orbit.radius
earth.position.y = math.sin(angle) * orbit.radius

 

En admettant que le soleil est à 0,0 et que tes angles soient en degrés.

Posté (modifié)

Ca j'en suis certain, la trigonométrie est au programme en 2nde, même encore aujourd'hui, un de mes fils y est.

 

Alors pour un système composé du Soleil, de la Terre et de la Lune et en supposant des orbites circulaires et dans le même plan de révolution on aurait :

 

'*** initialisation **
x_soleil = 0
y_soleil = 0

r_terre = 1 '* en UA
x_terre= x_soleil+r_terre
y_terre= y_soleil
p_terre=365.25*24 'période de révolution autour du Soleil en heures
w_terre=2*pi/p_terre 'en rad/h

r_lune = 0.00257 '* en UA
x_lune=x_terre+r_lune
y_lune=y_terre
p_lune=27.321582*24 'période de révolution autour de la Terre en heures
w_lune=2*pi/p_lune 'en rad/h

dt=1 'pas de calcul en heure
t=0

'*** bouclage ***
loop
  x_terre=x_soleil+r_terre*cos(w_terre*t)
  y_terre=y_soleil+r_terre*sin(w_terre*t)
  x_lune=x_terre+r_lune*cos(w_lune*t)
  y_lune=y_terre+r_lune*sin(w_lune*t)
  t=t+dt

  ===> affichage des points (avec mise à l'échelle pour que ça rentre sur l'écran)
end loop

 

Si tu veux rajouter Mercure, ou n'importe quelle autre planète il suffit d'ajouter :

 

'*** initialisation **
r_planete = distance héliocentrique '* en UA
x_planete= x_soleil+r_planete
y_planete= y_soleil
p_planete=période de révolution (généralement donnée en jours)*24 'période de révolution autour du Soleil en heures
w_planete=2*pi/p_planete 'en rad/h


'*** bouclage ***
ajouter dans la loop
  x_planete=x_soleil+r_planete*cos(w_planete*t)
  y_planete=y_soleil+r_planete*sin(w_planete*t)

 

Et pour ajouter un satellite à une planète :

 

'*** initialisation **
r_satellite = distance géocentrique '* en UA
x_satellite= x_planete+r_satellite
y_satellite= y_planete
p_satellite=période de révolution (généralement donnée en jours)*24 'période de révolution autour de la planete en heures
w_satellite=2*pi/p_satellite 'en rad/h


'*** bouclage ***
ajouter dans la loop après le calcul de la position de la planète :
  x_satellite=x_planete+r_satellite*cos(w_satellite*t)
  y_satellite=y_planete+r_satellite*sin(w_satellite*t)

 

 

Tu remarqueras que j'ai pris comme unité de distance l'Unité Astronomique plutôt que le mètre et pour le temps l'heure plutôt que la seconde. C'est juste pour avoir des nombres plus faciles à manipuler.

 

Après tu pourras compliquer les choses en tenant compte des orbites elliptiques (et ajuster les vitesses avec les lois de Kepler) et de l'inclinaison sur l'écliptique...

Modifié par Fred_76
Posté
(...) Soit 149 000 000 km pour la distance héliocentrique, une vitesse moyenne de 29.783 km/s et un rayon moyen de 6371 km. Ce qui me donne une vitesse angulaire de 0.0046747763302464 rd/s (...)

 

Aïe aïe aïe :b:

 

Tu as calculé la vitesse angulaire de la rotation de la Terre sur elle-même, alors que tu aurais besoin de la vitesse angulaire "de révolution" autour du Soleil 29.783 / 149000000 = 2 . 10^-7 (à un poil près !)

 

(...) j'ai crû comprendre que c'était en radian par seconde.. Ce qui me parait bizarre car divisant des km/s par des km, je devrais avoir des s^-1

 

tu as bien compris. et effectivement, on a des s^-1 parce que le radian est une unité "sans dimension"

 

A suivre...

Rejoignez la conversation !

Vous pouvez répondre maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous pour poster avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.