旋转矩阵及左右乘的意义,别浪费时间了,看这一篇就够了
前言
这些天研究旋转矩阵,被教科书和视频课绕迷糊了,可悲的是 ,如此简单的概念竟然没有一篇文章 (至少我没搜到)能够直观解释清楚,一气之下,我决定自己研究,经过不懈努力,终于解决了这一可爱又可恨的概念,也希望看到这篇文章的人能够静下心来好好阅读,对你肯定有帮助。
一、什么是旋转矩阵?
首先我需要花点儿时间说一下旋转矩阵的意义,大家一定一定要清楚旋转矩阵是有两个含义的:坐标变换和旋转向量,为了方便大家理解,我举最简单的例子。
1.坐标变换
中间的2×2矩阵即为我们所说的旋转矩阵,这里特别要注意,这个矩阵的意义是将p点在旋转后的坐标系(红色)中的坐标,转换为旋转前的坐标系(黑色)中的坐标。
可以看出,根据几何关系写出的旋转矩阵,其列向量恰好为旋转后坐标系(红色)的坐标轴在旋转前的坐标系(黑色)中的坐标,或者叫方向余弦。

看最左侧,为p点(向量)在A坐标系下的x方向坐标,以此类推,旋转矩阵将p点在B坐标系下的坐标,转换为在A坐标系下的坐标。
2.向量旋转
发现没有,蓝框里表示坐标系B中的一个向量,只不过该向量的坐标与坐标系A中的向量坐标相同。也就是说,旋转矩阵先将坐标系旋转,再在旋转后的坐标系上取与原坐标系坐标相同的向量,然后再将其投影到原坐标系,得到旋转后向量的坐标。
我想了很多话去形容这种操作,后来发现还是画图直观,请往下看:

得到p‘点在A坐标系上的坐标:

拿掉B坐标系,发现向量p发生了旋转,坐标系B仅起到中介作用,可以理解为向量p绕坐标系A转动了一定的角度:

至此,我想大家了解了旋转矩阵的两种功能,一个是坐标变换,一个是向量旋转,同样的旋转矩阵,同样的式子,就看你自己怎么解释了,这点来讲很重要,大家一定要清楚。
我知道到这里肯定还有人和我一样不是很懂,我再加以说明:
二、矩阵的左右乘
可能大家都听到过,左乘旋转矩阵绕固定坐标系旋转,右乘旋转矩阵绕自身坐标系旋转。单纯记这句话很容易让人产生误解!首先,这里的左右乘指的并不是某一向量左乘或者右乘旋转矩阵,而是多个旋转矩阵的组合方式是左乘还是右乘。其次,这句话还遗漏了一个相当重要的信息,绕固定坐标系旋转讨论的是向量的旋转,绕自身坐标系旋转讨论的是坐标变换!这是完全不一样的两种功能,例如我想研究向量的旋转,我可以也只可以将其视为向量绕固定坐标系的旋转。往下看。
1.旋转矩阵左乘
2.旋转矩阵右乘
右乘讨论的就是坐标变换了,来看问题:已知在C坐标系下表示的向量pC,我想求pC在原始坐标系0下的表示p0,已知C坐标系由原始坐标系0绕轴X0旋转α度成为坐标系A,再绕轴YA旋转成为坐标系B,再绕轴ZB旋转成为坐标系C。
这里逻辑不通的就多琢磨一会儿,(脑补一下咋转的,这次是绕自身坐标系旋转)。
总结
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/206059.html原文链接:https://javaforall.net
