---------------------------
import numpy as np
import matplotlib.pyplot as plt
# --- Konstansok ---
# Csillagászati Egység (AU) méterben
AU = 1.496e11
# Gravitációs konstans * Nap tömege (m^3 / s^2)
GM_sun = 1.32712440018e20
def calculate_orbit(a, e, num_points=1000):
"""
Kiszámítja az objektum x, y koordinátáit a pályája mentén.
a: félgocatengely (AU)
e: excentricitás (pályaelnyújtottság)
"""
a_m = a * AU # Átváltás méterbe
# Excentrikus anomália (E) szögek 0 és 2*pi között
E = np.linspace(0, 2 * np.pi, num_points)
# Koordináták kiszámítása a pálya saját síkjában
x = a_m * (np.cos(E) - e)
y = a_m * (np.sin(E) * np.sqrt(1 - e**2))
return x / AU, y / AU # Visszatérés AU-ban a könnyebb ábrázolásért
def find_closest_approach(ast_x, ast_y, earth_x, earth_y):
"""Megkeresi a legkisebb távolságot az aszteroida és a Föld pályája között."""
min_dist = float('inf')
closest_ast_pos = (0, 0)
closest_earth_pos = (0, 0)
# Egyszerűsített távolságmátrix az összes pontra
for i in range(len(ast_x)):
for j in range(len(earth_x)):
dist = np.sqrt((ast_x[i] - earth_x[j])**2 + (ast_y[i] - earth_y[j])**2)
if dist < min_dist:
min_dist = dist
closest_ast_pos = (ast_x[i], ast_y[i])
closest_earth_pos = (earth_x[j], earth_y[j])
return min_dist, closest_ast_pos, closest_earth_pos
# --- Föld pályaadatai ---
a_earth = 1.000 # 1 AU
e_earth = 0.0167 # Szinte tökéletes kör
# --- Példa Aszteroida pályaadatai (pl. Apophis-szerű égitest) ---
a_asteroid = 0.922 # Félnagytengely (AU)
e_asteroid = 0.191 # Excentricitás
# Pályák kiszámítása
earth_x, earth_y = calculate_orbit(a_earth, e_earth)
ast_x, ast_y = calculate_orbit(a_asteroid, e_asteroid)
# Legközelebbi pont meghatározása
min_distance, ast_close, earth_close = find_closest_approach(ast_x, ast_y, earth_x, earth_y)
print(f"--- Pályaszámítási Eredmények ---")
print(f"A Föld és az aszteroida pályájának legkisebb távolsága: {min_distance:.4f} AU")
print(f"Ez kb. {min_distance * 149.6e6:.0f} kilométernek felel meg.")
# --- Vizualizáció (Grafikon) ---
plt.figure(figsize=(8, 8))
# Nap ábrázolása a fókuszpontban (0,0)
plt.plot(0, 0, 'yo', markersize=12, label='Nap')
# Pályák kirajzolása
plt.plot(earth_x, earth_y, 'b-', label='Föld pályája')
plt.plot(ast_x, ast_y, 'r--', label='Aszteroida pályája')
# Legközelebbi megközelítés vonala
plt.plot([ast_close[0], earth_close[0]], [ast_close[1], earth_close[1]], 'g-', linewidth=2, label='Legkisebb távolság')
plt.plot(ast_close[0], ast_close[1], 'ro', markersize=6)
plt.plot(earth_close[0], earth_close[1], 'bo', markersize=6)
# Grafikon beállítások
plt.title('Aszteroida és a Föld pályájának modellezése')
plt.xlabel('X pozíció (AU)')
plt.ylabel('Y pozíció (AU)')
plt.axhline(0, color='grey', linestyle=':', alpha=0.5)
plt.axvline(0, color='grey', linestyle=':', alpha=0.5)
plt.legend()
plt.grid(True, linestyle='--', alpha=0.6)
plt.axis('equal')
# Megjelenítés
plt.show()
--------------
----------------
--- Pályaszámítási Eredmények ---
A Föld és az aszteroida pályájának legkisebb távolsága: 0.0009 AU
Ez kb. 130526 kilométernek felel meg.
Nincsenek megjegyzések:
Megjegyzés küldése