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函数直接求得旋转矩阵

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值