【游戏课】技术片段之——四元数与旋转矩阵的关系
来源:互联网 发布:java员工薪资管理 编辑:程序博客网 时间:2024/06/07 01:49
什么是四元数
四元数将三维空间的旋转拓展到思维空间,在旋转和方向的变化方面,优于欧拉角和变换矩阵。因为四元数把三维空间中的绕三个轴向的旋转变换为四维空间中绕一个轴向的旋转,从而使其比欧拉角的直接插值能产生更为平滑和连续的旋转,因此被广泛用于游戏世界中的旋转设置。
四元数的定义
一个四元树由四个浮点数定义:qx, qy, qz和qw。在数学形式上,它表示为
q = iqx+jqy+kqz+qw = qv + qw i^2=j^2=k^2=-1
qv = (qx, qy, qz)成为四元数的虚部,qw称为四元数的实部。
四元数与旋转矩阵的相互转化
将四元数Q = (qx, qy, qz, qw)转化为一个对应的旋转矩阵Mq
Mq = [1-s(qy^2+qz^2) s(qxqy-qwqz) s(qxqz+qwqy) 0
s(qxqy+qwqz) 1-s(qx^2+qz^2) s(qyqz-qwqx) 0
s(qxqz-qwqy) s(qxqy+qwqz) 1-s(qy^2+qx^2) 0
0 0 0 1]
其中,s = 2/||Q||
假设一个旋转矩阵为
M = [M00 M01 M02 0
M10 M11 M12 0
M20 M21 M22 0
0 0 0 1]
将它转换为四元数Q(qx, qy, qz, qw)的公式为
qw = +-1/2sqrt(M00+M11+M22+1), qx = (M21-M12)/(4qw), qy = (M02-M20)/(4qw), qz = (M10-M01)/(4qw).
- 【游戏课】技术片段之——四元数与旋转矩阵的关系
- 【游戏课】技术片段之——三个矩阵相乘的结果
- 【游戏课】技术片段之——弹簧质点模型与布料动画
- 【游戏课】技术片段之——BSP树在游戏中的应用
- 【游戏课】技术片段之——使用BillBoard技术进行快速绘制
- 【游戏课】技术片段之——球面线性插值(SLERP)
- 角速度与旋转矩阵的转换关系及思考
- 旋转矩阵与四元数
- 旋转矩阵与四元数
- 旋转矩阵与四元数
- 旋转矩阵与四元数
- 四元数与旋转关系
- transform-origin学习笔记之旋转与基点的关系
- 坐标系之间的旋转平移变换与对应变换矩阵的关系
- 坐标系之间的旋转平移变换与对应变换矩阵的关系
- 坐标系之间的旋转平移变换与对应变换矩阵的关系
- 坐标系之间的旋转平移变换与对应变换矩阵的关系
- 坐标系之间的旋转平移变换与对应变换矩阵的关系
- 大整数求和
- php 将csv文件内容导入数据库时值为空的解决
- XMPP使用TLS和auth登录
- Java数据库连接-JNDI方式- 配置Tomcat6.0 连接池
- hdu 1017 A Mathematical Curiosity(水题)
- 【游戏课】技术片段之——四元数与旋转矩阵的关系
- JAVA中continue的用法例子
- Multiple Instance Learning
- Android WifiDisplay分析一:相关Service的启动
- CMapStringToString
- 糗爆了,糗的放光芒.
- AD8065: 高性能、145 MHz FastFET™运算放大器 DSO
- 大数据分析——点“数”成金
- Linux权限小记