diff --git a/AstroLib/Src/AsAttitudeParam_2023.cpp b/AstroLib/Src/AsAttitudeParam_2023.cpp index cde58dbbbc41a02c4ca39882049ff9139585d0a2..88d9c412506d71f0bdd99352f39a6db8a57eaf93 100644 --- a/AstroLib/Src/AsAttitudeParam_2023.cpp +++ b/AstroLib/Src/AsAttitudeParam_2023.cpp @@ -761,25 +761,27 @@ void AsMtxToEuler212(const CMatrix& mtx, CEuler& euler) } } - +///*********************************************************************** +/// 方向余弦矩阵转为121转序Euler角 +/// @Author Ma Zihui +/// @Date 20235.3 +/// @Input +/// @Param mtx 坐标转移矩阵 +/// @Output +/// @Param euler 欧拉角(rad) +///*********************************************************************** void AsMtxToEuler121(const CMatrix &mtx, - CEuler &euler) CEuler &euler) { - // euler.m_Angle1 = atan2(mtx[0][1], -mtx[0][2]); - // euler.m_Angle2 = acos(mtx[0][0]); - // euler.m_Angle3 = atan2(mtx[1][0], mtx[2][0]); - if (fabs(mtx[0][0]) != 1) { euler.m_Angle1 = atan2(mtx[0][1], -mtx[0][2]); - } - + euler.m_Angle2 = acos(mtx[0][0]); + euler.m_Angle3 = atan2(mtx[1][0], mtx[2][0]); + } else { euler.m_Angle1 = 0; - double summ = atan2(mtx[1][1], mtx[1][2]); - if (mtx[2][0] == -1) double summ = atan2(-mtx[2][1], mtx[1][1]); if (mtx[0][0] == -1) {