如何在R中绘制代表行星运行轨迹的椭圆
行星椭圆轨道绘制方案
完全可以绘制,只要基于开普勒轨道的极坐标公式就可以生成完整的椭圆轨迹,以下是具体参数和操作方法:
已提供的3颗行星轨道参数整理
- 行星1:偏心率e=0.70,半长轴a=900,计算得半短轴≈642,焦点距离椭圆中心630
- 行星2:偏心率e=0.80,半长轴a=1200,计算得半短轴≈720,焦点距离椭圆中心960
- 行星3:偏心率e=0.90,半长轴a=1500,计算得半短轴≈654,焦点距离椭圆中心1350
具体绘制方法
手动绘图
你可以将恒星位置设为坐标原点,所有行星轨道共享同一个焦点(恒星点),用椭圆极坐标公式r = a*(1-e²)/(1 + e*cosθ)计算轨迹点:
θ从0到360°按固定间隔(比如每5°)取值,代入公式得到对应极径r,再转换为直角坐标
x = r*cosθ、y = r*sinθ,依次连接所有点即可得到平滑的椭圆轨迹。
代码快速生成
用Python的numpy+matplotlib可以快速输出可视化的轨道图,参考代码如下:
import numpy as np import matplotlib.pyplot as plt # 角度采样,取1000个点保证轨迹平滑 theta = np.linspace(0, 2 * np.pi, 1000) # 轨道参数:(偏心率e, 半长轴a, 轨道名称) orbit_params = [(0.7, 900, "行星1"), (0.8, 1200, "行星2"), (0.9, 1500, "行星3")] plt.figure(figsize=(8, 8), dpi=100) # 绘制中心恒星 plt.scatter(0, 0, c="#ff8c00", s=200, label="中心恒星") for e, a, label in orbit_params: # 计算半通径 p = a * (1 - e ** 2) # 极坐标计算每个角度对应的极径 r = p / (1 + e * np.cos(theta)) # 转换为直角坐标 x = r * np.cos(theta) y = r * np.sin(theta) plt.plot(x, y, label=label) # 等比例坐标轴保证椭圆不变形 plt.axis("equal") plt.legend() plt.xlabel("X轴坐标") plt.ylabel("Y轴坐标") plt.title("三颗行星轨道椭圆示意图") plt.grid(alpha=0.3) plt.show()
运行上述代码即可直接生成带标注的轨道对比图,你可以根据需要调整采样点数量、颜色、尺寸等参数。
内容的提问来源于stack exchange,提问作者Godofredo
相关产品推荐
相关产品推荐

