# نموذج محاكاة الأرض المقعّرة وحركة الشمس والقمر
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# إعدادات الشكل العام
R = 1.0 # نصف قطر الأرض (الوحدة الأساسية)
r_s = 0.8 * R # نصف قطر مدار الشمس داخل القبة
r_c = 0.9 * R # نصف قطر مدار القمر داخل القبة
z_s = 0.6 * R # ارتفاع مدار الشمس
z_c = 0.7 * R # ارتفاع مدار القمر
omega_s = 2 * np.pi / 24 # سرعة زاوية للشمس (دورة كل 24 ساعة)
omega_c = 2 * np.pi / 28 # سرعة زاوية للقمر (دورة كل 28 ساعة)
# عدد الخطوات الزمنية
steps = 500
t = np.linspace(0, 24, steps) # الزمن بوحدة الساعات
# مسارات الشمس والقمر
x_s = r_s * np.cos(omega_s * t)
y_s = r_s * np.sin(omega_s * t)
z_s_arr = np.full_like(t, z_s)
x_c = r_c * np.cos(-omega_c * t)
y_c = r_c * np.sin(-omega_c * t)
z_c_arr = np.full_like(t, z_c)
# رسم ثلاثي الأبعاد
fig = plt.figure(figsize=(10, 8))
ax = fig.add_subplot(111, projection='3d')
# رسم سطح الأرض (نصف كرة مقعرة)
u = np.linspace(0, np.pi, 30)
v = np.linspace(0, np.pi, 30)
u, v = np.meshgrid(u, v)
x = R * np.sin(u) * np.cos(v)
y = R * np.sin(u) * np.sin(v)
z = -R * np.cos(u)
ax.plot_surface(x, y, z, color='lightblue', alpha=0.3)
# مسار الشمس
ax.plot(x_s, y_s, z_s_arr, color='orange', label='مسار الشمس')
# مسار القمر
ax.plot(x_c, y_c, z_c_arr, color='gray', label='مسار القمر')
# رسم القبة العلوية (السماء)
u = np.linspace(0, np.pi, 30)
v = np.linspace(0, 2 * np.pi, 30)
u, v = np.meshgrid(u, v)
x_cup = R * np.sin(u) * np.cos(v)
y_cup = R * np.sin(u) * np.sin(v)
z_cup = R * np.cos(u)
ax.plot_surface(x_cup, y_cup, z_cup, color='skyblue', alpha=0.2)
ax.set_xlim([-R, R])
ax.set_ylim([-R, R])
ax.set_zlim([-R, R])
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.set_title('نموذج الأرض المقعرة وحركة الشمس والقمر')
ax.legend()
plt.tight_layout()
plt.show()