四元数与旋转矩阵

   这篇文章本来应该是前天就写的,按计划应该是和线性规划有关的内容。但是计划赶不上变换,中间插播了四元数。四元数里面的坑还真是不少,浪费了很多时间。学完四元数之后写了一篇笔记四元数与旋转变换,有需要的可以下载来看一看。
   从直观上来讲,四元数还是很好理解的。四元数包含的信息就两个:旋转轴和绕这个轴旋转的角度。比如说有个四元数 q = ( s i n θ 2 n , c o s θ 2 ) \mathbf{q}=(\mathrm{sin}\frac{\theta}{2} \mathbf{n},\mathrm{cos}\frac{\theta}{2}) q=(sin2θn,cos2θ),其中 n \mathbf{n} n就是旋转轴, θ \theta θ就是旋转角,并且这两个量都是在世界坐标系中的表达式。现在举个例子,看看四元数如何实现旋转。令 n = ( 0 , 0 , 1 ) \mathbf{n}=(0,0,1) n=(0,0,1) θ = π 6 。 \theta = \frac{\pi}{6}。 θ=6π并假设有一个点P,它的世界坐标是 ( x w , y w , z w ) = ( 6 , 6 , 6 ) (x_\mathbf{w},y_\mathbf{w},z_\mathbf{w})=(6,6,6) (xw,yw,zw)=(6,6,6),它的局部坐标是 ( x L , y L , z L ) = ( 0 , 1 , 0 ) (x_\mathbf{L},y_\mathbf{L},z_\mathbf{L})=(0,1,0) (xL,yL,zL)=(0,1,0),它的局部坐标系原点的世界坐标是(6,5,6)。那么现在我们让点P绕 n \mathbf{n} n轴旋转 θ \theta θ角所得到的P点的世界坐标是多少呢?我们先用四元数的方法来计算一下, q p q − 1 = ( − 1 2 , 3 2 , 0 , 0 ) \mathbf{qpq}^{-1}=(-\frac{1}{2},\frac{\sqrt{3}}{2},0,0) qpq1=(21,23 ,0,0),其中 p = ( x L , y L , z L , 0 ) p=(x_\mathbf{L},y_\mathbf{L},z_\mathbf{L},0) p=(xL,yL,zL,0)。这样的结果看起来有点莫名其妙,实际上还需要加上局部坐标系原点在世界坐标系中的坐标才能得到变换之后的P点的新坐标: P n e w = ( − 1 2 , 3 2 , 0 ) + ( 6 , 5 , 6 ) = ( 11 2 , 5 + 3 2 , 6 ) P_{new}=(-\frac{1}{2},\frac{\sqrt{3}}{2},0)+(6,5,6)=(\frac{11}{2},5+\frac{\sqrt{3}}{2},6) Pnew=(21,23 ,0)+(6,5,6)=(211,5+23 ,6)。如果我们通过几何方法来求取新坐标,就会发现只给轴 n = ( 0 , 0 , 1 ) \mathbf{n}=(0,0,1) n=(0,0,1) θ = π 6 \theta=\frac{\pi}{6} θ=6π是不能够完成旋转操作的,因为 n = ( 0 , 0 , 1 ) \mathbf{n}=(0,0,1) n=(0,0,1)只代表了旋转轴的方向,没有说明旋转轴在什么位置。观察四元数的处理,就可以知道,旋转轴必须要经过局部坐标系原点在世界坐标系中的位置。这样一来,几何方法和四元数方法得到的结果就吻合了 。
   用四元数来处理旋转的时候它的思路是固定的,这也就意味着它在某些情况下的处理比较麻烦,需要转化。它的好处我觉得就是在插值的时候计算量小一些,方便设计旋转规律。具体内容见上面的链接资源。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值