Quaternion和Rotation Matrix的相互转换

简介:

设有Quaternion q(x, y, z, w), rotation axis(x, y, z), rotation angle (theta),则Quaternion和Axis-Angle有如下对应关系,

q.x = sin(theta / 2) * axis.x
q.y = sin(theta / 2) * axis.y
q.z = sin(theta / 2) * axis.z
q.w = cos(theta / 2)

 

由Rotation Matrix求Quaternion

如何由给定的rotation matrix提取出旋转轴和旋转角度?

使用函数D3DXQuaternionRotationMatrix可以直接由Rotation matrix求出对应的Quaternion

 

由Quaternion求Rotation Matrix

可以利用上面的公式先求出旋转轴和旋转角度

axis.x = q.x / sin(theta / 2)

axis.y = q.y / sin(theta / 2)

axis.z = q.z / sin(theta / 2)

theta = 2 * arccos(q.w)

或者D3DX函数D3DXQuaternionToAxisAngle求出旋转轴和旋转角度

得到了旋转轴axis和旋转角度angle以后就可以利用D3DXMatrixRotationAxis来求取旋转矩阵,也可以手动求解,看这篇博文。也可以一步到位,用D3DXMatrixRotationQuaternion函数直接求得旋转矩阵

 

本文转自zdd博客园博客,原文链接:http://www.cnblogs.com/graphics/archive/2009/11/06/1597189.html,如需转载请自行联系原作者

相关文章
|
5月前
Eigen::Matrix4f 是先旋转还是先平移的顺序
Eigen::Matrix4f 是先旋转还是先平移的顺序
198 0
|
8月前
|
存储 定位技术 计算机视觉
Armadillo与OpenCV矩阵数据mat、vec与Mat的相互转换
Armadillo与OpenCV矩阵数据mat、vec与Mat的相互转换
104 1
|
JSON Java Android开发
Matrix 之 ApkChecker 的使用
Matrix 之 ApkChecker 的使用
273 0
Matrix 之 ApkChecker 的使用
旋转矩阵(Rotation Matrix)的推导及其应用
向量的平移,比较简单。   缩放也较为简单   矩阵如何进行计算呢?之前的文章中有简介一种方法,把行旋转一下,然后与右侧对应相乘。在谷歌图片搜索旋转矩阵时,看到这张动图,觉得表述的很清晰了。     稍微复杂一点的是旋转,如果只是二维也很简单(因为很直观),但因为是三维的,有xyz三个轴,先推导二维的再延伸到三维。
5006 0
|
Android开发

热门文章

最新文章

下一篇
开通oss服务