当前位置:   article > 正文

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

角度转四元数

在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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/422765
推荐阅读
相关标签
  

闽ICP备14008679号