我有一个CMRotationMatrix * rot,我想从矩阵中得到俯仰,偏航,滚动.
任何想法我怎么能这样做? @H_301_3@谢谢
任何想法我怎么能这样做? @H_301_3@谢谢
解决方法
使用四元数比使用欧拉角更好….滚动,俯仰和偏航值可以使用以下公式从四元数导出:
tinkerforge和这里:Conversion between Quaternions and Euler angles.
@H_301_3@它可以实现为:
@H_301_3@其中radianstoDegrees是一个预处理器指令,实现如下:
- CMQuaternion quat = self.motionManager.deviceMotion.attitude.quaternion;
- myRoll = radiansToDegrees(atan2(2*(quat.y*quat.w - quat.x*quat.z),1 - 2*quat.y*quat.y - 2*quat.z*quat.z)) ;
- myPitch = radiansToDegrees(atan2(2*(quat.x*quat.w + quat.y*quat.z),1 - 2*quat.x*quat.x - 2*quat.z*quat.z));
- myYaw = radiansToDegrees(asin(2*quat.x*quat.y + 2*quat.w*quat.z));
@H_301_3@这样做是为了将公式给出的弧度值转换为度. @H_301_3@有关转换的更多信息,请访问:
- #define radiansToDegrees(x) (180/M_PI)*x
tinkerforge和这里:Conversion between Quaternions and Euler angles.