四元数的转换(二)

本文介绍了四元数与欧拉角之间的相互转换方法,包括数学公式的直接应用及通过旋转矩阵作为中介的转换过程。对于游戏开发中物体旋转的实现提供了理论依据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

四元数不仅能和矩阵之间进行相互转换,还能和欧拉角之间进行相互转换。当然,在看着一片博客的时候,会默认为你已经了解啥是欧拉角了,并且知道,它是怎么用的。

这一篇中还是有大量的数学公式,写起来听麻烦的,因此我们贴图,还有,我们不是专业的数学课,只是讲这些数学只是在游戏中的应用,不讲某一些数学公式的推到过程。

1.欧拉角转换为四元数:

设四元数q=(w,x,y,z),绕着空间中任意一个向量n=<nx,ny,nz>旋转,则这个四元数q=(cosθ/2,nx*sinθ/2,ny*sinθ/2,nz*sinθ/2)。欧拉角的分量h,p,b都讲转换为四元数。

因此,我们得到每一个分量:


所以,四元数q=hxpxb,注意中间的是向量的叉乘。


注意,这是从物体坐标系到惯性坐标系,而从惯性坐标系到物体坐标系是这个四元数的共轭四元数。


2.四元数转换为欧拉角

在这里我们需要借助于矩阵来实现我们的转换。

首先,将四元数转换为矩阵,然后再将矩阵转换为四元数。

2.1矩阵转换为四元数:

首先,将欧拉角转换为旋转矩阵:从物体坐标系到惯性坐标系


其中BPH都是欧拉角绕着旋转轴的旋转矩阵。其中我们可以得到

m32=-sinp,p=-arcsin(m32)

m31/m33=sinh/cosh=tanh,h=arctan(m31/m33)

m12/m22=sinb/cosb=tanb,b=arctan(m12/m22)

之前,我们得到了四元数和矩阵之间转换,他们个个元素之间的对应关系是:


进一步:


因此,我们可以得到,四元数和欧拉角之间各个元素之间的关系:




最后希望各位看客将这些公式能够编程实现,能够理解的更加的透彻

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值