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:
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
M = 7.3477e22 # Masse Lune (kg)
R = 1.737e6 # Rayon Lune (m)
altitude = 1.0e5 # Altitude orbite = 100 km
rayon_orbite = R + altitude
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