我有一个 CMRotationMatrix *rot 我想从矩阵中获取俯仰、偏航、滚转。
我有什么想法可以做到这一点吗?
Thanks
使用四元数比使用欧拉角更好......可以使用以下公式从四元数导出横滚角、俯仰角和偏航角值:
roll = atan2(2*y*w - 2*x*z, 1 - 2*y*y - 2*z*z)
pitch = atan2(2*x*w - 2*y*z, 1 - 2*x*x - 2*z*z)
yaw = asin(2*x*y + 2*z*w)
它可以实现为:
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));
其中 radianstoDegrees 是一个预处理器指令,实现为:
#define radiansToDegrees(x) (180/M_PI)*x
这样做是为了将公式给出的弧度值转换为度数。
有关转换的更多信息可以在此处找到:修补匠和这里:四元数和欧拉角之间的转换.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)