Orbite

  • Découverte

simulation

formules

import pygame
import math

# Paramètres graphiques
LARGEUR, HAUTEUR = 800, 800
FPS = 60

# Paramètres physiques (Lune)
G = 6.674e-11          # Constante universelle (toujours la même)
M = ...                # Masse de l'astre central (kg)
R = ...                # Rayon de l'astre central (m)
altitude = ...         # Altitude de l'objet en orbite (m)
rayon_orbite = R + altitude  # Rayon orbital total (m)


# Échelle de conversion (pixels/mètre)
ECHELLE = 1 / 5000

pygame.init()
fenetre = pygame.display.set_mode((LARGEUR, HAUTEUR))
pygame.display.set_caption("Simulation d'orbite autour de la Lune")
clock = pygame.time.Clock()
font = pygame.font.SysFont("Arial", 16)

def calcul_orbite(G, M, R, temps):
    # Calcule vitesse orbitale et position

    # Ecris tes calculs ici

    return x, y, v, omega

def main():
    running = True
    temps = 0
    facteur_acceleration = 300  # Pour visualiser l'orbite plus vite

    centre_x, centre_y = LARGEUR // 2, HAUTEUR // 2

    while running:
        clock.tick(FPS)
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False

        temps += (1/FPS) * facteur_acceleration

        x, y, vitesse_orbitale, omega = calcul_orbite(G, M, R, temps)

        satellite_x = centre_x + int(x * ECHELLE)
        satellite_y = centre_y + int(y * ECHELLE)

        # Affichage
        fenetre.fill((10, 10, 30))  # Espace sombre
        pygame.draw.circle(fenetre, (200, 200, 200), (centre_x, centre_y), int(RAYON_LUNE * ECHELLE))  # Lune
        pygame.draw.circle(fenetre, (255, 255, 255), (satellite_x, satellite_y), 5)  # Satellite

        # Orbite tracée
        pygame.draw.circle(fenetre, (60, 60, 60), (centre_x, centre_y), int(RAYON_ORBITE * ECHELLE), 1)

        # Affichage des infos
        infos = [
            f"Temps simulé : {temps:.1f} s",
            f"Altitude orbite : {ALTITUDE/1000:.0f} km",
            f"Vitesse orbitale : {vitesse_orbitale:.1f} m/s",
            f"Vitesse angulaire : {omega:.5f} rad/s",
            f"Accélération du temps : x{facteur_acceleration}"
        ]

        for i, texte in enumerate(infos):
            surface_texte = font.render(texte, True, (255, 255, 255))
            largeur_texte, hauteur_texte = surface_texte.get_size()
            fenetre.blit(surface_texte, (LARGEUR - largeur_texte - 10, 10 + i*(hauteur_texte + 5)))

        pygame.display.flip()

    pygame.quit()

if __name__ == "__main__":
    main()

Paramètres:

🌕 Lune autours de la terre

M = 5.972e24              # Masse Terre (kg)
R = 6.371e6               # Rayon Terre (m)
altitude = 3.844e8 - R    # Distance Terre-Lune = 384400 km
rayon_orbite = R + altitude

Période orbitale attendue : ≈ 27,3 jours (réaliste)

M = 5.972e24          # Masse Terre (kg)
R = 6.371e6           # Rayon Terre (m)
altitude = 5.5e5      # Altitude Starlink = 550 km
rayon_orbite = R + altitude

🚀 Satellite lunaire bas (autour de la Lune, à 100 km)

M = 7.3477e22         # Masse Lune (kg)
R = 1.737e6           # Rayon Lune (m)
altitude = 1.0e5      # Altitude orbite = 100 km
rayon_orbite = R + altitude

🌞 Terre autour du Soleil

M = 1.989e30            # Masse Soleil (kg)
R = 6.9634e8            # Rayon Soleil (m) - valeur indicative uniquement
altitude = 1.496e11 - R # Distance moyenne Soleil-Terre = 149.6 millions km
rayon_orbite = R + altitude

Pour aller plus loin