旋转的描述【1】——方向余弦矩阵

旋转的描述【1】——方向余弦矩阵目录刚体定点旋转 1 定义 2 表示方法 2 1 方向余弦矩阵 2 2 旋转矢量 2 2 1 等效旋转矢量 2 2 2 罗德里格参数 2 3 四元数 2 4 欧拉角 3 相关转化刚体定点旋转 1 定义我们对 Markdown 编辑器进行了一些功能拓展与语法支持 除了标准的 Markdown 编辑器功能 我们增加了如下几点新功能 帮助你用它写博客 全新的界面设计 将会带来全新的写作体验 在创作中心设置你喜爱的代码高亮

1.定义

方向余弦矩阵是由两组不同标准正交基基底向量之间的方向余弦所形成的矩阵。
 通常一个矢量 V V V在某个坐标系内可用矢量的坐标该坐标系的标准正交基来表示。例如,一个矢量在直角 X Y Z XYZ XYZ坐标系下的坐标为 ( a , b , c ) (a,b,c) (a,b,c),则 V = a i + b j + c k V=ai+bj+ck V=ai+bj+ck。这里的 i , j , k i,j,k i,j,k即为坐标系的标准正交基,分别是 X Y Z XYZ XYZ三轴的单位矢量,模值均为1。
 方向余弦矩阵可以用来表达一组标准正交基与另一组标准正交基之间的转化关系,也可以用来表达一个向量对于另一组标准正交基的方向余弦。换句话说,方向余弦矩阵可以表示两个坐标系间的角位置关系,也可以表示一个向量相对于一个坐标系的角位置。

2.推导

2.1 已知条件

2.2 推导目标

 将坐标系b的标准正交基用坐标系n的标准正交基表示,换句话讲,求坐标系b标准正交基在坐标系n内的坐标。

2.3 推导过程

 先看二维情况,如图所示,假设坐标系 X b Y b X_{b}Y_{b} XbYb和坐标系 X n Y n X_{n}Y_{n} XnYn,分别称为 b b b系和 n n n系,其基底分别为 i b , j b i_{b},j_{b} ib,jb i n , j n i_{n},j_{n} in,jn,坐标系 b b b由坐标系 n n n旋转得到。考虑用 n n n系的标准正交基来表示 b b b的标准正交基,于是将 b b b系标准正交基的基底(以下简称基底)投影到 n n n系。结合向量内积的含义,得到如下图所示的关系。
描述个屁,看图自明
 如上图所示,基底 i b i_{b} ib需要投影到 n n n系下水平 i n i_{n} in和垂直 j n j_{n} jn两个方向。先看投影到 i n i_{n} in的部分,投影到 i n i_{n} in的分量由两部分构成,前面括号里的内积 i b ⋅ i n i_{b} \cdot i_{n} ibin表示 i b i_{b} ib投影到 i n i_{n} in的大小,后面的 i n i_{n} in表示投影矢量方向。由于两个矢量都是单位矢量,
i b ⋅ i n = ∣ i b ∣ ∗ ∣ i n ∣ ∗ c o s ⟨ i b , i n ⟩ = ∣ i b ∣ ∗ c o s ⟨ i b , i n ⟩ = c o s ⟨ i b , i n ⟩ (1) i_{b} \cdot i_{n}=\lvert i_{b}\rvert* \lvert i_{n}\rvert * cos \left \langle i_{b},i_{n} \right \rangle=\lvert i_{b}\rvert * cos \left \langle i_{b},i_{n} \right \rangle=cos \left \langle i_{b},i_{n} \right \rangle\tag{1} ibin=ibincosib,in=ibcosib,in=cosib,in(1)类比可以得到 i b i_{b} ib投影到 n n n系下垂直 j n j_{n} jn方向的分量。
于是,基底 i b i_{b} ib n n n系下可以表示为
i b = ( i b ⋅ i n ) i n + ( i b ⋅ j n ) j n (2) i_{b}=(i_{b} \cdot i_{n})i_{n}+(i_{b} \cdot j_{n})j_{n}\tag{2} ib=(ibin)in+(ibjn)jn(2)同理可得,基底 j b j_{b} jb n n n系下可以表示为
j b = ( j b ⋅ i n ) i n + ( j b ⋅ j n ) j n (3) j_{b}=(j_{b} \cdot i_{n})i_{n}+(j_{b} \cdot j_{n})j_{n}\tag{3} jb=(jbin)in+(jbjn)jn(3)
将式 ( 2 ) ( 3 ) (2)(3) (2)(3)写为矩阵形式有,
[ i b j b ] = [ i n j n ] [ i b ⋅ i n j b ⋅ i n i b ⋅ j n j b ⋅ j n ] (4) \left [ \begin{matrix} i_{b} & j_{b} \end{matrix}\right ]=\left [ \begin{matrix} i_{n} & j_{n} \end{matrix}\right ]\begin{bmatrix} i_{b}\cdot i_{n} & j_{b}\cdot i_{n}\\ i_{b}\cdot j_{n}& j_{b}\cdot j_{n} \end{bmatrix}\tag{4} [ibjb]=[injn][ibinibjnjbinjbjn](4)
结合 ( 1 ) (1) (1)式,上式可写为
[ i b j b ] = [ i n j n ] [ c o s ⟨ i b , i n ⟩ c o s ⟨ j b , i n ⟩ c o s ⟨ i b , j n ⟩ c o s ⟨ j b , j n ⟩ ] (4) \left [ \begin{matrix} i_{b} & j_{b} \end{matrix}\right ]=\left [ \begin{matrix} i_{n} & j_{n} \end{matrix}\right ]\begin{bmatrix} cos \left \langle i_{b},i_{n} \right \rangle &cos \left \langle j_{b},i_{n} \right \rangle\\ cos \left \langle i_{b},j_{n} \right \rangle& cos \left \langle j_{b},j_{n} \right \rangle \end{bmatrix}\tag{4} [ibjb]=[injn][cosib,incosib,jncosjb,incosjb,jn](4)
 将以上情况推广到三维情况下时,标准正交基中增加基底 k k k,容易得到相应的基底变换式为:
[ i b j b k b ] = [ i n j n k b ] [ c o s ⟨ i b , i n ⟩ c o s ⟨ j b , i n ⟩ c o s ⟨ k b , i n ⟩ c o s ⟨ i b , j n ⟩ c o s ⟨ j b , j n ⟩ c o s ⟨ k b , j n ⟩ c o s ⟨ i b , k n ⟩ c o s ⟨ j b , k n ⟩ c o s ⟨ k b , k n ⟩ ] = [ i n j n k b ] P n b (5) \begin{aligned}\left [ \begin{matrix} i_{b} & j_{b}& k_{b} \end{matrix}\right ]&=\left [ \begin{matrix} i_{n} & j_{n}& k_{b} \end{matrix}\right ]\begin{bmatrix} cos \left \langle i_{b},i_{n} \right \rangle &cos \left \langle j_{b},i_{n} \right \rangle&cos \left \langle k_{b},i_{n} \right \rangle\\ cos \left \langle i_{b},j_{n} \right \rangle& cos \left \langle j_{b},j_{n} \right \rangle& cos \left \langle k_{b},j_{n} \right \rangle\\ cos \left \langle i_{b},k_{n} \right \rangle& cos \left \langle j_{b},k_{n} \right \rangle& cos \left \langle k_{b},k_{n} \right \rangle\\ \end{bmatrix} \\ &= \left [ \begin{matrix} i_{n} & j_{n}& k_{b} \end{matrix}\right ]P_{n}^b\end{aligned}\tag{5} [ibjbkb]=[injnkb]cosib,incosib,jncosib,kncosjb,incosjb,jncosjb,kncoskb,incoskb,jncoskb,kn=[injnkb]Pnb(5)
 下面分析式 ( 5 ) (5) (5)。整体来看,通过矩阵 P n b P_{n}^b Pnb即可利用 n n n系基底表示 b b b系基底,因此称 P n b P_{n}^b Pnb为从 n n n系到 b b b过渡矩阵,或 坐标系/基 变换矩阵,其中 P n b P_{n}^b Pnb的列向量为 b b b系三个基底分别与 n n n系三个基底的夹角余弦,而行向量为 n n n系三个基底分别与 b b b系三个基底的夹角余弦。
 考虑如何将 b b b系下的坐标转换为 n n n系下。假设有向量 V V V,其在两个坐标系下的表示为 V = V x n i n + V y n j n + V z n k n = V x b i b + V y b j b + V z b k b \\V=V_{x}^{n}i_{n}+V_{y}^{n}j_{n}+V_{z}^{n}k_{n}=V_{x}^{b}i_{b}+V_{y}^{b}j_{b}+V_{z}^{b}k_{b} V=Vxnin+Vynjn+Vznkn=Vxbib+Vybjb+Vzbkb,写成向量的形式为:
[ i n j n k n ] [ V x n V y n V z n ] = [ i b j b k b ] [ V x b V y b V z b ] (6) \left [ \begin{matrix} i_{n} & j_{n}& k_{n} \end{matrix}\right ]\left [ \begin{matrix} V_{x}^{n}\\ V_{y}^{n}\\ V_{z}^{n} \end{matrix}\right ]=\left [ \begin{matrix} i_{b} & j_{b}& k_{b} \end{matrix}\right ]\left [ \begin{matrix} V_{x}^{b}\\ V_{y}^{b}\\ V_{z}^{b} \end{matrix}\right ]\tag{6} [injnkn]VxnVynVzn=[ibjbkb]VxbVybVzb(6)
( 5 ) (5) (5)式代入上式,可得:
[ i n j n k n ] [ V x n V y n V z n ] = [ i n j n k n ] P n b [ V x b V y b V z b ] (7) \left [ \begin{matrix} i_{n} & j_{n}& k_{n} \end{matrix}\right ]\left [ \begin{matrix} V_{x}^{n}\\ V_{y}^{n}\\ V_{z}^{n} \end{matrix}\right ]=\left [ \begin{matrix} i_{n} & j_{n}& k_{n} \end{matrix}\right ]P_{n}^b \left [ \begin{matrix} V_{x}^{b}\\ V_{y}^{b}\\ V_{z}^{b} \end{matrix}\right ]\tag{7} [injnkn]VxnVynVzn=[injnkn]PnbVxbVybVzb(7)
上式中,显然 [ i n j n k n ] \left [ \begin{matrix} i_{n} & j_{n}& k_{n} \end{matrix}\right ] [injnkn]可逆,于是有
[ V x n V y n V z n ] = P n b [ V x b V y b V z b ] (8) \left [ \begin{matrix} V_{x}^{n}\\ V_{y}^{n}\\ V_{z}^{n} \end{matrix}\right ]=P_{n}^b \left [ \begin{matrix} V_{x}^{b}\\ V_{y}^{b}\\ V_{z}^{b} \end{matrix}\right ]\tag{8} VxnVynVzn=PnbVxbVybVzb(8)
观察上式可以发现 P n b P_{n}^b Pnb不仅为从 n n n系到 b b b过渡矩阵,也是从 b b b系到 n n n坐标变换矩阵,为体现坐标变换将 P n b P_{n}^b Pnb记为 C b n C_{b}^n Cbn。又因为 C b n C_{b}^n Cbn由两坐标轴间夹角的余弦值构成,故又称方向余弦矩阵



















3.总结

 本文以旋转前后两坐标系的标准正交基投影关系切入,将旋转后坐标系的标准正交基用旋转前坐标系的标准正交基表示,从而建立起坐标系间的变换关系。然后,根据坐标系间基底的变换关系,推导出两坐标系坐标的变换公式,同时得到了方向余弦矩阵。

4.参考文献

《捷联惯导算法与组合导航原理》严恭敏 P9—P10 2.2.1方向余弦阵

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231840.html原文链接:https://javaforall.net

(0)
上一篇 2025年11月18日 上午9:01
下一篇 2025年11月18日 上午9:22


相关推荐

  • Linux — Makefile的学习笔记以及多级目录下Makefile的编写

    Linux — Makefile的学习笔记以及多级目录下Makefile的编写一、Make简介:工程管理器,顾名思义,是指管理较多的文件,Make工程管理器也就是个“自动编译管理器”,这里的“自动”是指它能够根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入Makefile文件文件的内容来执行大量的编译工作,Make将只编译改动的代码文件,而不用完全编译。Makefile文件一般和项目的其他源文件放在同一个目录下。在机器上可以同时存在许多不同的m…

    2022年6月6日
    178
  • Redis 可视化工具

    Redis 可视化工具1 命令行不知道大家在日常操作 redis 时用什么可视化工具呢 以前总觉得没有什么太好的可视化工具 于是问了一个业内朋友 对方回 你还用可视化工具 直接命令行呀 redis 提供了这么多命令 操作起来行云流水 用可视化工具觉得很 low 命令行的鄙视用工具的 用高端工具的鄙视低端工具的 鄙视链一直存在 虽然用命令行自己也可以 但是总感觉效率上不如用工具 在视觉上不那么直观 尤其是看 json 的时候 在命令行就很不友好 大佬朋友说 谁说命令行就不能格式化 json 了 可以利用 iredi

    2026年3月17日
    2
  • 2026年国内Agent平台有哪些?8大主流智能体平台深度对比与选型指南

    2026年国内Agent平台有哪些?8大主流智能体平台深度对比与选型指南

    2026年3月16日
    4
  • Eclipse SVN冲突详细解决方案「建议收藏」

    Eclipse SVN冲突详细解决方案「建议收藏」大家一起开发,难免有时会同时修改同一个文件,这样就要学会解决冲突。当大家更新代码,发现以下情况的时候,就说明你的修改的文件和服务器的文件产生了冲突(一般是别人也改了同一个文件)。1)和服务器有冲突的文件:2)点击Update以后,如果出现以下情况(出现四个文件),就说明需要解决冲突。如何解决冲突:出现文件冲突的时候:你有四个选择:1以我修改的为准,不管服务

    2022年10月14日
    8
  • kindeditor配置syntaxhighlighter…「建议收藏」

    kindeditor配置syntaxhighlighter…「建议收藏」kindeditor默认是prettify,我行号没弄出来,换了syntaxhighlighter,下面是配置的代码。。。 kindeditortest body{ font-family:”MicrosoftYaHei”; } #editor{ word-wrap:break-word; } #ContentSubm

    2022年10月11日
    4
  • 给一组数据 怎么用matlab花折线图,matlab 画折线图 实例「建议收藏」

    给一组数据 怎么用matlab花折线图,matlab 画折线图 实例「建议收藏」数据:某地区近50年雷暴发生次数(1957~2006雷暴日):画如下的年际变化图。———————————————————————————%将数据载入数组a中a=[…..(省略)];x=1957:2006;x=x’;%ma中放平均值:ma=zeros(50,1)+mean(a);p…

    2022年5月23日
    37

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号