航天器轨道根数转状态信息

def calculate_state_information(data, miu=3.986e14):
    """
    根据六根数推算出航天器相应的状态信息
    Args:
        data: 椭圆和双曲线转移轨道的六根数: a;e;i;omega;Omega;f
        %a: 半长轴;e:离心率;i:轨道倾角;
        %omega: 近地点幅角;Omega: 升交点经度;f: 真近点角。
        抛物线转移轨道的根数: p;i;omega;Omega;f
        %p:半矩形矩;i:轨道倾角;omega:近地点幅角;
        %Omega: 升交点经度;f: 真近点角。
        圆转移轨道的根数: a;i;u;Omega
        %a:半径;i:轨道倾角;u:纬度参数;
        %Omega: 升交点经度。
        miu: 3.986E5  # km3/s2
             3.986E14  # m3/s2

    Returns:
        R0: 位置
        V0: 速度
    """
    if len(data) == 6:  # 椭圆和双曲线
        a = data[0]
        e = data[1]
        i = data[2]
        omega = data[3]
        Omega = data[4]
        f = data[5]
        p = abs(a * (1 - e ** 2))
        u = omega + f
    elif len(data) == 5:  # 抛物线
        p = data[0]
        i = data[1]
        omega = data[2]
        Omega = data[3]
        f = data[4]
        u = omega + f
    else:  # 圆形
        p = data[0]
        e = 0
        i = data[1]
        omega = 0
        u = data[2]
        Omega = data[3]
        f = 0

    Coordinate = p / (1 + e * np.cos(f)) * np.array([
        np.cos(Omega) * np.cos(u) - np.sin(Omega) * np.sin(u) * np.cos(i),
        np.sin(Omega) * np.cos(u) + np.cos(Omega) * np.sin(u) * np.cos(i),
        np.sin(i) * np.sin(u)
    ])

    V = (miu / p) ** 0.5 * np.array([
        -np.cos(Omega) * (np.sin(u) + e * np.sin(omega)) - np.sin(Omega) * (np.cos(u) + e * np.cos(omega)) * np.cos(i),
        -np.sin(Omega) * (np.sin(u) + e * np.sin(omega)) + np.cos(Omega) * (np.cos(u) + e * np.cos(omega)) * np.cos(i),
        np.sin(i) * (np.cos(u) + e * np.cos(omega))
    ])

    return Coordinate, V

输入一个列表形式的六根数,将会返回航天器的位置以及速度,注意返回的航天器状态是在地心惯性系下的表示。

我的输入信息为:

data = [1534141.1843523756, 0.9965408363248673, 2.158830500815679, 3.5658638413234094, 1.0233558786998698, 3.1295206069169907]
print(calculate_state_information(data))

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值