将满月,新月,上弦月,下弦月时月球、地球、太阳的相对位置绘制出来(地球在坐标原点处)python代码
时间: 2023-12-21 12:04:06 浏览: 145
这里给出一个基于matplotlib库的Python代码:
import matplotlib.pyplot as plt
import numpy as np
# 定义月球、地球、太阳的半径
moon_radius = 1737.1
earth_radius = 6371
sun_radius = 696340
# 定义月球到地球的距离
moon_earth_distance = 384400
# 定义月球、地球、太阳的位置(以地球为原点)
moon_pos = np.array([moon_earth_distance, 0])
earth_pos = np.array([0, 0])
sun_pos = np.array([-149.6e6, 0])
# 定义画布
fig, ax = plt.subplots(figsize=(10, 5))
# 绘制月球
moon_circle = plt.Circle(moon_pos, moon_radius/earth_radius, color='gray')
ax.add_artist(moon_circle)
# 绘制地球
earth_circle = plt.Circle(earth_pos, 1, color='blue')
ax.add_artist(earth_circle)
# 绘制太阳
sun_circle = plt.Circle(sun_pos, sun_radius/earth_radius, color='orange')
ax.add_artist(sun_circle)
# 添加标签
ax.annotate('Moon', xy=moon_pos, xytext=(moon_pos[0]+20000, moon_pos[1]+20000))
ax.annotate('Earth', xy=earth_pos, xytext=(earth_pos[0]+10000, earth_pos[1]+10000))
ax.annotate('Sun', xy=sun_pos, xytext=(sun_pos[0]+1e6, sun_pos[1]+1e6))
# 添加坐标轴
ax.set_xlim(-2*moon_earth_distance, 2*moon_earth_distance)
ax.set_ylim(-2*moon_earth_distance, 2*moon_earth_distance)
# 将画布保存为图片
plt.savefig('moon_phases.png')
这段代码绘制了一个月球、地球、太阳的相对位置图,其中月球到地球的距离采用了实际距离的比例尺,而月球、地球、太阳的大小则采用了半径的比例尺。通过调整moon_pos
的值可以模拟不同的月相。