Méchanique de vol orbital

Retrouver tous les sujets résolus

Modérateur : moderateur

Répondre
Aimery MNSI

Méchanique de vol orbital

Message par Aimery MNSI » mar. 21 févr. 2023 20:09

Code : Tout sélectionner

# orbital parameter
        self.start_posx = 540
        self.start_posy = 180
        self.semi_major_axis = 270
        self.gravitational_parameter = 4 * 10 ** 6
        self.eccentricity = 0.8
        self.average_pos = math.sqrt(self.gravitational_parameter / (self.semi_major_axis ** 3))
        # self.period = 2 * math.pi * math.sqrt((self.semi_major_axis ** 3) / self.gravitational_parameter)
        self.start_time = time.get_ticks()

    def getPos(self):
        mean_anomaly = self.average_pos * (time.get_ticks() / 1000 - self.start_time / 1000)
        true_anomaly = mean_anomaly + 2 * self.eccentricity * math.sin(mean_anomaly) + 1.25 * (
                    self.eccentricity ** 2) * math.sin(2 * mean_anomaly)
        dist = (self.semi_major_axis * (1 - self.eccentricity)) / (1 + self.eccentricity * math.cos(true_anomaly))
        print(true_anomaly)
        return math.cos(true_anomaly) * dist + 540, math.sin(true_anomaly) * dist + 360
Bonjour,

Le programme calcule en premier la vitesse angulaire moyenne puis l'anomalie moyenne en fonction du temps puis la vraie anomaly avec la formule:
v = M + 2esin(M) + 1.25 * e²sin(2M)
Pour avoir la position qui en découle je récupère la distance puis applique le cosinus en fonction de la vraie anomaly

Quand je compile getPos la position me dessine une belle ellipse en fonction du temps mais la true anomaly va à 180° puis 70° puis 230° puis 180° puis elle termine l'ellipse et je n'arrive pas à comprendre pourquoi la true anomaly ne fait pas le tour sans s’arrêter.

J'ai essayé de vérifier si la formule était correcte sur wikipedia mais il n'y a pas de problème avec ce que j'ai vérifié. J'ai essayé de vérifier si l'erreur provenait de la transformation de ma distance angulaire en coordonnées mais ce n'est pas le cas.

Merci pour votre aide
SoS(53)
Messages : 42
Enregistré le : ven. 9 sept. 2022 09:18

Re: Méchanique de vol orbital

Message par SoS(53) » mar. 21 févr. 2023 21:30

Bonsoir,
ce site concerne plutôt les élèves de lycée jusqu'au niveau terminale et non aux étudiants de classe préparatoire.
Concernant votre programme je pense que l'erreur vient
return math.cos(true_anomaly) * dist + 540, math.sin(true_anomaly) * dist + 360

qu'il faut remplacer par
return math.cos(true_anomaly) * dist + 540, math.sin(true_anomaly) * dist + 180



A essayer.
Après il y a beaucoup de self. ..... J'espère qu'il n'y a pas de problème d'héritage dans les classes que vous avez créé...
Cordialement et bonne recherche
Aimery MNSI

Re: Méchanique de vol orbital

Message par Aimery MNSI » mar. 21 févr. 2023 21:38

Re,
J'ai essayé mais malheureusement cela n'a pas marché car le chiffre 180 sert juste à centrer l'orbite au centre de l'écran.
Merci quand même
SoS(53)
Messages : 42
Enregistré le : ven. 9 sept. 2022 09:18

Re: Méchanique de vol orbital

Message par SoS(53) » mar. 21 févr. 2023 22:08

Vous pouvez essayer de créer une liste de temps manuellement plutôt que d'utiliser le module time.
Répondre