天球系到轨道系的转换算法

地心惯性坐标系,通常指J2000地心惯性系,一般简称天球系,其与卫星轨道坐标系的互相转换在轨道动力学计算以及仿真中很常见。本文从工程实用角度出发,拒绝废话,兼顾定义、原理和代码实现,并且给出一个包含输入输出的算例,供读者对照移植。

 

1.天球系和轨道系的定义

(1)地心惯性坐标系 (简称:天球系)

原点 在地心处, 轴沿地球自转轴方向,指向北天极, 指向春分点, 与另两轴构成右手直角坐标系。

(2)轨道坐标系 (简称:轨道系)

轨道坐标系是由轨道平面所确定的坐标系,坐标原点 与卫星质心重合,其中 轴指向地心,其 轴在轨道平面内与 轴垂直,指向卫星飞行方向, 垂直轨道平面与另两轴构成右手直角坐标系。

2.天球系转轨道系的两种方法

   由于轨道六根数和三维速度位置矢量可以互相转换,则产生两种姿态转换方法,工程上实际应用常用第二种方法。

   方法一,基于轨道六根数:

方法二,基于位置速度矢量:

3.主要代码以及算例

typedef struct OrbitSixElement
{
	double a; //半长轴
	double i; //轨道倾角
	double Omiga; //升交点赤经RA
	double e; //偏心率
	double omiga; //近地点幅角
	double theta; //真近点角
}ORBIT6E;
int main()
{
	//方法一
	Matrix T1(3, 3), T2(3, 3), T0(3, 3); //天球系到轨道系
	T0(0, 0) = 0; T0(0, 1) = 1; T0(0, 2) = 0;
	T0(1, 0) = 0; T0(1, 1) = 0; T0(1, 2) = -1;
	T0(2, 0) = -1; T0(2, 1) = 0; T0(2, 2) = 0;
	Vector r1(-42163474.43, 403423.4267, 135.3820711);
	Vector v1(-30.1984135, -3074.495479, -0.004924677);
	ORBIT6E sE1; //自定义的轨道六根数结构体
	GibbsOrbit::Cal6EleBy_rv(r1 / 1000.0, v1 / 1000.0, sE1); //自定义函数,根据位置速度矢量计算轨道六根数
	cout << sE1.a << " " << sE1.i << " " << sE1.Omiga << " " << sE1.e << " " << sE1.omiga << " " << sE1.theta << " " << endl; //打印轨道六根数
	double u1 = DEG2RAD(sE1.omiga + sE1.theta);
	double i1 = DEG2RAD(sE1.i);
	double omg1 = DEG2RAD(sE1.Omiga);
	T1 = T0 * R_z(u1) * R_x(i1) * R_z(omg1); //天球系到轨道系
	cout << "方法一,天球系到轨道系旋转矩阵:" << endl;
	MatPrint(T1); //自定义的矩阵打印函数

	//方法二
	Matrix M1(3, 3);
	Vector Yo = Cross(v1, r1) / Norm(Cross(v1, r1)); //Cross为求叉乘,Norm为求二范数
	Vector Zo = -1 * r1 / Norm(r1);
	Vector Xo = Cross(Yo, Zo);
	M1.SetRow(0, Xo);
	M1.SetRow(1, Yo);
	M1.SetRow(2, Zo);
	cout << "方法二,天球系到轨道系旋转矩阵:" << endl;
	MatPrint(M1); //自定义的矩阵打印函数
}

4.转换结果

 

  • 10
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
历元平天球坐标是一种基于固定星历的天球坐标,它是以地球为基准,以固定的恒星位置为参考建立的。平地球坐标是以地球为基准,以地球表面某一点为原点建立的地球坐标。下面是历元平天球坐标与平地球坐标之间的转换: 1. 计算黄赤交角 首先需要计算黄赤交角,黄赤交角是指黄道坐标和赤道坐标之间的转换参数。计算公式为: ε = 23.4392911° - 0.0130042° T - 1.64×10^-7° T^2 + 5.04×10^-7° T^3 其中,T为儒略世纪数,计算公式为: T = (JD - 2451545.0) / 36525 其中,JD为儒略日。 2. 计算赤道坐标 赤道坐标是历元平天球坐标的坐标之一,赤道坐标与平地球坐标之间的转换为: X = cos(δ) cos(α) Y = cos(δ) sin(α) Z = sin(δ) 其中,α为赤经,δ为赤纬。 3. 计算地心赤道坐标 地心赤道坐标是以地心为原点,以赤道为坐标建立的坐标。地心赤道坐标与赤道坐标之间的转换为: Xeq = Xcosε - Ysinε Yeq = Xsinε + Ycosε Zeq = Z 其中,ε为黄赤交角。 4. 计算地心直角坐标 地心直角坐标是以地心为原点,以某一点为Z轴正方向建立的坐标。地心直角坐标与地心赤道坐标之间的转换为: Xe = Xeq Ye = Ye cosΦ - Ze sinΦ Ze = Ye sinΦ + Ze cosΦ 其中,Φ为地球上某一点的纬度。 综上所述,历元平天球坐标与平地球坐标之间的转换包括黄赤交角的计算、赤道坐标与平地球坐标转换、地心赤道坐标与赤道坐标的转换、以及地心直角坐标与地心赤道坐标的转换

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值