zoukankan      html  css  js  c++  java
  • 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/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    2020/7/18 JDBC
    2020.8.1
    2020.7.31
    二元泰勒公式
    一元泰勒公式
    极值
    介值定理
    积分上限函数
    积分中值定理
    狄利克雷(Dirichlet)函数
  • 原文地址:https://www.cnblogs.com/graphics/p/1597189.html
Copyright © 2011-2022 走看看