旋转矩阵

21 篇文章 1 订阅

旋转坐标轴还是旋转坐标?有什么区别?相信很多人都有过类似的问题,这里我来简单尝试着理解一下。

旋转矩阵的相关知识请查看维基百科旋转矩阵

需要注意的是 Roll Pitch Yaw 的定义:

Roll

Pitch

Yaw

这里的旋转矩阵是需要左乘的,而且以逆时针为正。

关于左乘和右乘:
R是一个旋转矩阵,X是一个三维列向量[x,y,z]'。
RX就是把X旋转。
(R
X)'=X'*R',看R'就是一个右乘的旋转矩阵,但是左边必须要是行向量。

坐标轴的旋转:

下面来说坐标轴的旋转:A代表点,B代表坐标系,R代表坐标系各轴的旋转,C代表点在坐标系中的表示。
以二维坐标系为例,命名为B1,如图:

 

为理解方便,我们再假设有一个固定的世界坐标系G,和该坐标系是重合的。
现在将坐标系B1其绕原点顺时针旋转90度,旋转矩阵R1是:

R1 = [0 1 0; 
     -1 0 0;
      0 0 1]

得到新的坐标系B2,如图:

 

从坐标系来看,B2=R1B1。B1和B2 都是在G中的坐标系表示。原来坐标系B1上的点A,在G中的坐标,记为C1,是 (1,0,0),旋转之后,A在G中的坐标是不变的(无论怎么旋转,A在世界坐标系中的位置都不会发生变化,但平移会发生变化),但是在B2中的坐标,记为C2,变成了(0,-1,0)。将其左乘A在B1中的坐标,就得到A在B2中坐标了。C2=R1C1,即A点在B2中的表示(A在B2中的向量表示)

这一点其实挺好解释的,因为B2相对于B1(也就是G)顺时针旋转了90度,那就相当于A点相对于B1到B2的变化是逆时针旋转了90度。逆时针旋转90度的矩阵,记为R2,是:

R2 = [0 -1 0; 
      1  0 0;
      0  0 1]

R2实际就是R1的逆矩阵,这点也不难理解,R2R1X,就相当于先把X顺时针90度,再逆时针90度,还是X,即 R2R1X=X,R1 = inv(R2)。R2和R1都是针对G来说的

仿佛有点规律了,RB1 = B2, 然后 C2 = inv(R)C1。
确实是这样,那怎么得到?我们来推导一下:

R*B1 = B2 
这一步实际上做了一个基底的变换,基底变了,但是还有下面这个等式:
B1*C1 = B2*C2 //B1C1和B2C2得到的都是A点在G中的表示
也就是说在不同基底下,我们还有同样的值
于是可以求出 C2 = inv(B2)*B1*C1 = inv(B1)*inv(R)*B1*C1 //inv(RB1)=inv(B2)=inv(B1)inv(R)
等等,刚刚不是说C2 = inv(R)*C1的么?别急,B1实际上是一个单位矩阵,可以以同B1重合的G为参考系理解一下。于是:
C2 = inv(R)*C1 = R'*C1

旋转坐标系时旋转矩阵的列

  • 第一列,旋转后的新X轴在原来的坐标系(x,y,z)下怎么表示(单位向量)
  • 第二列,旋转后的新Y轴在原来的坐标系(x,y,z)下怎么表示(单位向量)
  • 第三列,旋转后的新Z轴在原来的坐标系(x,y,z)下怎么表示(单位向量)

比如R1*B1之后:

  • B2的X轴是在B1坐标系的(0 -1 0), X轴是原来的-Y轴
  • B2的Y轴是在B1坐标系的(1 0 0),Y轴是原来的X轴
  • B2的Z轴是在B1坐标系的(0 0 1),Z轴不变
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值