diff --git a/AstroLib/Include/AsAttitudeParam_2023.h b/AstroLib/Include/AsAttitudeParam_2023.h index c8b5fd21cecef83b6853c11043540588a00f9d32..1301bc9a8d474caadbd18fc4746113005e43dec3 100644 --- a/AstroLib/Include/AsAttitudeParam_2023.h +++ b/AstroLib/Include/AsAttitudeParam_2023.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once #include "AsCoordinate.h" #include "AsMath.h" @@ -84,4 +84,31 @@ void AsMtxToEuler231(const CMatrix& mtx, CEuler& euler); /// @Output /// @Param angle 欧拉角 ///*********************************************************************** -void AsMtxToEuler123(const CMatrix& mtx, CEuler& euler); \ No newline at end of file +void AsMtxToEuler123(const CMatrix& mtx, CEuler& euler); + +///*********************************************************************** +/// 将四元数转换为321转序的欧拉角(Z-Y-X) +/// 遵循航天器标准定义:偏航角->俯仰角->滚转角 +/// 对应绕惯性系Z轴->新Y轴->新X轴的连续旋转 +/// @Author 王薪程(你们可爱的学长哦~) +/// @Date 2025-03-03 +/// @Version 3.2.1 +/// +/// @Input +/// @Param quat 输入四元数(需标准化,不标准化也无所谓啦),顺序:标量Qs,矢量QxQyQz) +/// +/// @Output +/// @Param euler 输出欧拉角结构体(单位:弧度) +/// m_Angle3: 绕X轴滚转角 φ ∈ [-π,π] +/// m_Angle2: 绕Y轴俯仰角 θ ∈ [-π/2,π/2] +/// m_Angle1: 绕Z轴偏航角 ψ ∈ [-π,π] +/// +/// @Return true: 转换成功 false: 四元数未标准化 +/// +/// @算法说明: +/// 1. 通过四元数导出旋转矩阵关键元素,避免完整矩阵计算 +/// 2. 采用显式代数展开提升计算效率 +/// 3. 奇异位置处理逻辑与AsMtxToEuler321()保持兼容 +/// 4. 数值阈值统一采用工程标准1e-7 +///*********************************************************************** +void AsQuatToEuler321(CQuaternion& quat, CEuler& euler); \ No newline at end of file