四元数的转换(一)

在3D开发中,旋转是一个重点。因为,在3D空间中,物体旋转的角度是360度,全方位的旋转。我们之间学习了在3D数学中,解决旋转问题主要依靠的工具就是:矩阵,四元数和欧拉角。他们之间都是可以转换的,今天我们和大家分享的是四元数和矩阵之间的转换。因为,这一节含有大量的公式和方法,数学公式在电脑上书写起来比较的费劲,我们就直接贴图。

1.四元数转换为矩阵

在3D空间中,物体绕着任意一个向量<nx,ny,nz>,旋转角度θ,旋转的旋转矩阵是:


在空间中一个任意的四元数:q=<w,x,y,z>。而这个四元数也可以表示为绕着上面的旋转向量,旋转θ之后的形式:


然后,我们伟大的数学家他们就通过这些公式推导出来,四元数转换为矩阵的数学公式,推导公式就不写了(因为太难了,我以为看不懂。。。。)


这是从惯性坐标系到物体坐标系的。因为旋转矩阵是正交矩阵,所以他的转置和他的逆矩阵是相同的。因此,从物体坐标系转换到惯性坐标系,就是求之前矩阵的逆矩阵,也就是转置矩阵。

2.矩阵转换为四元数

根据上面求出的矩阵,怎么实现将矩阵转换为四元数?

设一个四元数为:q=<w,x,y,z>

旋转矩阵为:


通过求解这个矩阵的迹,也就是死主对角线之和,来求解出

w=m11+m22+m33=4*w*w-1。具体的推导过程就不写了,注意x,y,z的平方和是1-w的平方。

同理我们也能求解出x,y,z。

公式1:


但是注意,我们在求解w,x,y,z时,不会全部使用这个公式,因为它求解出来的全部是正数,而四元数却不全是正数。因此,我们还要结合其他的公式,例如:

公式2:


通过这些公式和上面的公式结合,我们就能求解出w,x,y,z.。问题是怎么结合?

首先,我们通过公式1 求解出w,x,y,z中最大的那个数。但是要注意一个技巧,在这里我们不一定要统统的求出这些数,比较他们平方的也能比较出他们的最大的。然后通过比较出来的最大值,我们结合公式2,求解出来每一个数。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值