matlab 角度转四元数_学习笔记—四元数与欧拉角之间的转换

本文介绍了四元数和欧拉角在3D图形学中的应用,详细阐述了角度转四元数以及四元数转角度的数学原理,并提供了MATLAB的示例代码。内容涵盖Tait-Bryan角度(Yaw、Pitch、Roll)的概念,以及在不同坐标系下的转换方法。
摘要由CSDN通过智能技术生成

在3D图形学中,最常用的旋转表示方法便是四元数和欧拉角,比起矩阵来具有节省存储空间和方便插值的优点。本文主要归纳了两种表达方式的转换,计算公式采用3D笛卡尔坐标系:

92439019a56dfbd33cfb5d1bf3be61aa.png

图1 3D Cartesian coordinate System (from wikipedia)

定义

6c6cb03d8eb21bfdd4cf10cf6d8f7f86.png分别为绕Z轴、Y轴、X轴的旋转角度,如果用Tait-Bryan angle表示,分别为Yaw、Pitch、Roll。

a208f1f24bfc0567e5b42732aaff4f7a.png

图2 Tait-Bryan angles (from wikipedia)

一、四元数的定义

8679e6ed229ec4949bc774e1cb92abd5.png

通过旋转轴和绕该轴旋转的角度可以构造一个四元数:

9aee8340d838da84862da710382305cb.png

其中

2320f4301a21c6831d218b62d98ef431.png是绕旋转轴旋转的角度,

95a77308de795ce0bdb6748bd840174d.png为旋转轴在x,y,z方向的分量(由此确定了旋转轴)。

二、欧拉角到四元数的转换

38368ea6257c6b81733586efc8ab076a.png

三、四元数到欧拉角的转换

04159cc7f3706c788cc225238c624bf0.png

arctan和arcsin的结果是

35dbdf33a909aa9928f6c91bbb70724d.png,这并不能覆盖所有朝向(对于

a307d41918faaa558460d1df5ff3b1c0.png

7d7eb2cac914c90f7994ad22f22bc47d.png的取值范围已经满足),因此需要用atan2来代替arctan。

29ed66ba43ef7f5fc04c6bd7f7cdfef3.png

四、在其他坐标系下使用

在其他坐标系下,需根据坐标轴的定义,调整一下以上公式。如在Direct3D中,笛卡尔坐标系的X轴变为Z轴,Y轴变为X轴,Z轴变为Y轴(无需考虑方向)。

f60cae557bbb860dd240c24e085d4f06.png

五、示例代码

参考文献:

[1] http://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles

[2] Ken Shoemake, Animating Rotation with Quaternion Curves, 1985

posted on 2009-12-13 18:44 Heath 阅读(43931) 评论(2)  编辑 收藏 引用 所属分类: Graphics Programming

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值