四元数定义三维旋转

四元数由哈密顿于1843年发明,用于描述三维旋转并解决万向节锁问题。四元数表示为(x*i, y*j, z*k, w),其中(x,y,z)是虚部,w是实部。万向节锁在欧拉角表示的旋转中出现,当绕Y轴旋转90度后,X轴和Z轴指向相同方向。四元数能有效避免这个问题,并且可以与欧拉角相互转换。文章提供了四元数类的代码实现。" 117544567,10536300,三星Note3 USB3.0实测:速度提升20%,"['Android', 'USB技术', '手机评测', '数据接口', '移动存储']

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

        四元数(Quaternion)是由爱尔兰数学家 哈密顿(Hamilton)在1843年发明的概念。四元数的乘法不符合交换律(commutative law)。

        四元数 可以描述为 (x * i, y * j, z * k, w) ,其中(x,y,z)表示虚部,w表示实部。

        四元数 最大的价值在于 描述旋转,解决三维中的 万向节锁 的问题。

万向节锁:

       三维中的旋转通常用绕 XYZ 三个轴的旋转来表示,这个旋转角度即 欧拉角,也就是经常说的 Pitch、Yaw、Roll

        采用欧拉角 描述旋转的 优点是直观简单(矩阵乘),容易理解,旋转过程分解为:按照一定的顺序(比如X、Y、Z) 依次独立地绕轴旋转。

        这种独立的旋转带来了一个问题,也就是 未考虑到旋转之间的关联性

        假设 物体先绕转X轴旋转,然后再绕Y轴,最后绕Z轴选择,当绕Y轴旋转90度之后 万向节锁 的问题就出现了,因为X轴已经被求值了,它不再随同其他两个轴旋转,这样X轴与Z轴就指向同一个方向(它们相当于同一个轴了)。

欧拉角 与 四元数

        欧拉角可以和四元数进行相互转换,一个四元数可以 由欧拉角(对应 φ,θ,ψ)变换得到:

        

        同样,欧拉角 也可以通过四元数 变换得到:

        

        代码可以参考作者定义的 四元数 类(Quaternion.h)

/* 四元数定义 - 用于旋转
   lin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值