Calculer le vecteur vitesse sur une orbite [fermé]

Seth Alter

Calculer le vecteur vitesse sur une orbite [fermé]


C’est une question très spécifique pour un jeu vidéo dont je suis le développeur principal. Ayant calculé les paramètres d’une méthode elliptique, je sais ce qui suit:

g

= constante gravitationnelle

m

= masse de la planète

r

= distance de la planète au vaisseau spatial

une

= axe semi-majeur

P 1

= position du vaisseau spatial =

( X 1 , y 1 )

P 2

= position de la planète =

( X 2 , y 2 )

r p

= distance périaphés

v p

= vitesse au périastre

v

= vitesse =

g m ( 2 r 1 une )

J’essaie de résoudre où le vaisseau spatial sera dans une seconde à partir de maintenant; en particulier, l’angle de direction de la vitesse. Voici ce que j’ai jusqu’à présent:

ϕ = arccos ( r p v p r v )

X = v cos ϕ

y = v péché ϕ

… Et ici, je suis coincé. Je pense que je dois obtenir le vecteur perpendiculaire au vecteur de rayon, puis tourner en quelque sorte

ϕ

par ce vecteur, mais je ne sais pas comment. (Je soupçonne également qu’il y a un problème avec le

X

et

y

calculs; l’excentricité de l’ellipse devrait-elle être prise en compte?) Quelles sont les dernières étapes?

John Forkosh

@DavidZ J’ai remarqué que vous aviez fermé cela comme hors sujet parce que c’était des devoirs. Mais cela a duré six jours après sa publication, ce qui semble un peu tard pour de tels jugements. De plus, la balise devoirs a été ajoutée par un tiers, alors que la question ne me semblait pas (et ne me semble toujours pas) comme des devoirs, bien que, de toute façon, le questionneur d’origine semble avoir perdu tout intérêt. Et j’ai également remarqué que votre profil indique un intérêt pour la programmation, par lequel j’aurais pensé que vous pourriez étendre une plus grande latitude à ces questions. Peut-être le fermer?

David Z ♦

Il n’est pas trop tard pour clore une question hors sujet. Après tout, une question hors sujet ne devient pas sujet si nous attendons assez longtemps. En outre, la balise de devoirs n’est pas une condition préalable à la fermeture comme des devoirs; c’est juste un indicateur de certaines des mêmes caractéristiques qui pourraient conduire à fermer une question comme à la maison. De plus, quel que soit mon intérêt pour la programmation, cela ne change pas la portée de ce site; c’est un site de physique, pas un site de programmation.

John Forkosh

@DavidZ D’accord, merci pour l’info. (Je noterais entre parenthèses qu’il y a beaucoup de questions d’apparence maladroite qui ne sont pas fermées, et qui ne sont même pas rarement votées. C’était une question physique simple sur le mtoion dans un champ gravitationnel, et l’op a montré beaucoup de son propre travail. Il n’a pas demandé du tout sur la programmation, juste comment résoudre les équations pertinentes. J’ai mentionné une approche différente, à savoir, étant donné

David Z ♦

Notez que la question n’était pas fermée pour la programmation, elle était fermée pour ne pas poser de question conceptuelle.

Réponses


 John Forkosh

Plus une suggestion alternative qu’une réponse à votre approche ellipse paramétrée. J’ai moi-même programmé de manière récréative quelques simulations similaires à plusieurs corps (par exemple, cliquez sur mon profil, puis sur ma page d’accueil, puis cliquez sur ce lien voronoi – les points se déplacent sous une loi de force mutuelle). Modélisez simplement la force (gravitationnelle dans votre cas) directement et l’ellipse émergera d’elle-même. C’est beaucoup plus facile à programmer que l’ellipse paramétrée, le seul problème étant que sa complexité de calcul prendra plus de temps sur l’ordinateur.

Commencez avec vos conditions initiales

( X je , y je ) , je = 1 , 2

et le navire

v X , v y

à

t = 0

(pour plus de réalisme, vous voudrez peut-être ajouter un

z

-composant et afficher les projections sur un

X , y

-avion représentant une fenêtre à travers laquelle l’observateur regarde). Choisissez un petit pas de temps, disons

t = 0,01 secondes

et calculer

X 2 ( t + t ) = X 2 ( t ) + v X ( t ) t

, idem pour

y

, comme d’habitude.

Ensuite, mettez à jour

v X , v y

pour le pas de temps suivant en calculant la force (gravitationnelle)

F X ( t ) , F y ( t )

sur le navire (en ignorant la planète que je suppose que vous supposez est stationnaire), et l’accélération correspondante

une X ( t ) , une y ( t )

(où la masse du navire s’annulera). Donc

v X ( t + t ) = v X ( t ) + une X ( t ) t

, idem pour

y

. Et maintenant, vous êtes prêt pour le prochain pas de temps.

Comme je pense que vous pouvez le voir, le calcul est simple et direct. Le seul problème est que l’ordinateur peut être « fatigué » en calculant tous ces pas de temps (bien que si votre jeu est animé, vous aurez besoin image par image

X , y

est de toute façon). Mais si le temps informatique n’est pas un problème, je peux à peu près vous garantir que c’est la meilleure façon / plus facile / plus_générale de concevoir le code. Par exemple, il est assez facilement généralisable à une situation à plusieurs corps pour laquelle il n’existe même pas de solution de type ellipse de forme fermée.

Mark H

Vous obtiendrez des résultats plus précis si votre mise à jour de position comprend une accélération car elle se traduit par la position correcte pour une force constante:

Declan

Vous voudrez peut-être vérifier la stabilité de votre algorithme et de l’algorithme de Mark. Je pense que pour les gros t, ce sera un problème. Voir les méthodes « Leap Frog ».

John Forkosh

@MarkH Pour améliorer la « position correcte » sans votre deuxième commande

John Forkosh

@Declan Je suis d’accord qu’il y aura certainement des erreurs accumulées / propagées et des erreurs finies-

Declan

@john .. Oui, je pensais à plusieurs orbites.

 

[fermé], #(une, calculer, Le, orbite, sur, Vecteur, vitesse

 

google

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *