我希望从手机背面(-Z轴)获得增强现实应用的方位角。我的应用程序仅在Landscape Right中运行。在iPhone 5S上进行测试。
目前,我使用以下方法: CoreLocation heading base on back camera (Augmented reality)
这种方法有两个问题:
问题是,我没有数学背景知道如何解释这些变化。特别有问题的是,我无法通过deviceMotion.attitude从偏航/俯仰/滚动计算旋转矩阵。我试过了:
float w = motion.attitude.yaw;
float v = motion.attitude.pitch;
float u = motion.attitude.roll;
r.m11 = cos(v) * cos(w);
r.m12 = sin(u) * sin(v) * cos(w) - cos(u) * sin(w);
r.m13 = sin(u) * sin(w) + cos(u) * sin(v) * cos(w);
r.m21 = cos(v) * sin(w);
r.m22 = cos(u) * cos(w) + sin(u) * sin(v) * sin(w);
r.m23 = cos(u) * sin(v) * sin(w) - sin(u) * cos(w);
r.m31 = -sin(v);
r.m32 = sin(u) * cos(v);
r.m33 = cos(u) * cos(v);
我已经尝试了所有Tait-Bryan组合(u-v-w,u-w-v,v-u-w,v-w-u,w-v-u,w-u-v),其中一些接近但仍然不够接近。
根据我的观察,似乎来自CLLocationManager的磁性标题比来自CMMotionManager的计算标题更精确,但是,即使我得到了正确的角度,我也不知道我应该从哪里开始获得等效的不同坐标系参考系中的角度。任何帮助将不胜感激。