diff --git a/AstroLib/Src/AsCoordSystem_2023.cpp b/AstroLib/Src/AsCoordSystem_2023.cpp index 324106f17d6b1bcbde2f163756cc6af0b1d0f5fe..6a83ae4bd29dc4bbd977998c50716f7250692f3a 100644 --- a/AstroLib/Src/AsCoordSystem_2023.cpp +++ b/AstroLib/Src/AsCoordSystem_2023.cpp @@ -14,4 +14,28 @@ using namespace std; +//******************************************************************** +/// 地固系到发射坐标系的转换矩阵 +/// 发射坐标系:x轴平行地面指向发射方向,y垂直地面铅锤向上,z成右手直角坐标系 +/// @author fangxuankun +/// @Date 2023.4.5 +/// @Input +/// @Param A0 发射方位角A0,定义为发射方向与当地正北的夹角,顺时针度量为正(rad) +/// @Param Lon 发射点的经度(rad) +/// @Param Lan 发射点的纬度(rad) +/// @Output +/// @Param mtx 地固系到发射坐标系的转换矩阵 +//******************************************************************** +void AsCBFToLCMtx(double A0,double Lon,double Lat,CMatrix& mtx) +{ + double a, b, c; + a = Lon - AsCHalfPI; + b = Lat; + c = -A0 - AsCHalfPI; + CMatrixMx(1, 0, 0, 0, cos(b), sin(b), 0, -sin(b), cos(b)); + CMatrixMy(cos(c), 0, -sin(c), 0, 1, 0, sin(c), 0, cos(c)); + CMatrixMz(cos(a), sin(a), 0, -sin(a), cos(a), 0, 0, 0, 1); + CMatrixM = My*Mx*Mz; + mtx = M; +}