From 85c8782e28079566e80c28eb3ce5519fbbd5dbfd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=B5=E5=91=B5=E5=93=92346?= Date: Wed, 5 Mar 2025 08:24:06 +0000 Subject: [PATCH] =?UTF-8?q?update=20AstroLib/Include/AsAttitudeParam=5F202?= =?UTF-8?q?3.h.=20=E5=9B=9B=E5=85=83=E6=95=B0=E8=BD=AC321=E8=BD=AC?= =?UTF-8?q?=E5=BA=8F=E6=AC=A7=E6=8B=89=E8=A7=92=E5=87=BD=E6=95=B0=E5=A4=B4?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 呵呵哒346 --- AstroLib/Include/AsAttitudeParam_2023.h | 31 +++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/AstroLib/Include/AsAttitudeParam_2023.h b/AstroLib/Include/AsAttitudeParam_2023.h index c8b5fd2..1301bc9 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 -- Gitee