From af46a65b6473aafd61535198ca71d0f06f4726c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AC=99=E5=A3=B0=E4=B8=8D=E8=AF=AD?= <15495244+Sheng_buyu@user.noreply.gitee.com> Date: Sat, 15 Mar 2025 08:26:54 +0000 Subject: [PATCH] =?UTF-8?q?update=20AstroLib/Src/AsAttitudeParam=5F2023.cp?= =?UTF-8?q?p.=20=E6=8C=89=E8=80=81=E5=B8=88=E5=90=8C=E5=AD=A6=E5=BB=BA?= =?UTF-8?q?=E8=AE=AE=E4=BF=AE=E6=94=B9=E4=BA=86=E4=B8=80=E4=B8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 笙声不语 <15495244+Sheng_buyu@user.noreply.gitee.com> --- AstroLib/Src/AsAttitudeParam_2023.cpp | 28 ++++++++++++--------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/AstroLib/Src/AsAttitudeParam_2023.cpp b/AstroLib/Src/AsAttitudeParam_2023.cpp index 78d413b..58f715b 100644 --- a/AstroLib/Src/AsAttitudeParam_2023.cpp +++ b/AstroLib/Src/AsAttitudeParam_2023.cpp @@ -623,7 +623,7 @@ void AsQuatToEuler323(CQuaternion& quat, CEuler& euler) ///*********************************************************************** /// 根据坐标转移矩阵计算132转序欧拉角 /// @Author Wang Deyu -/// @Date 2025.03.11 +/// @Date 2025.03.15 /// @Input /// @Param mtx 输入的转移矩阵 /// @Output @@ -631,23 +631,19 @@ void AsQuatToEuler323(CQuaternion& quat, CEuler& euler) ///*********************************************************************** void AsMtxToEuler132(const CMatrix& mtx, CEuler& euler) { - const double pi = 4 * std::atan(1.0); double cbeta; - //处理万向锁 - if (sqrt(mtx[0][0] * mtx[0][0] + mtx[2][0] * mtx[2][0]) < 1e-6) + //处理万向锁 + if (fabs(-mtx[1][0] - 1) < 1e-12) { - if (-mtx[1][0] > 0) - { - euler.m_Angle1 = 0; - euler.m_Angle2 = pi / 2; - euler.m_Angle3 = atan2(-mtx[0][2], mtx[0][1]); - } - else - { - euler.m_Angle1 = 0; - euler.m_Angle2 = -pi / 2; - euler.m_Angle3 = atan2(-mtx[0][2], -mtx[0][1]); - } + euler.m_Angle1 = 0; + euler.m_Angle2 = AsCPI / 2; + euler.m_Angle3 = atan2(-mtx[0][2], mtx[0][1]); + } + else if(fabs(-mtx[1][0] + 1) < 1e-12) + { + euler.m_Angle1 = 0; + euler.m_Angle2 = -AsCPI / 2; + euler.m_Angle3 = atan2(-mtx[0][2], -mtx[0][1]); } else { -- Gitee