我正在尝试获取设备的 Z 轴(屏幕)的方向和倾角,无论设备处于什么位置(即横向、纵向或其他)。
通过以下代码,我可以从 Y 轴(设备顶部)获取航向,但无法弄清楚如何更改轴:
- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading
{
_heading = (float) manager.heading.magneticHeading;
}
通过以下代码,我可以获得倾斜度,但仅限于横向模式,而不是在每个位置:
_inclination = fabsf(self.motionManager.deviceMotion.attitude.roll);
我从苹果的示例代码pARk用旋转矩阵做了一些实验,但我在数学上苦苦挣扎。我能做的最好的事情是获取 Z 轴的方向,但前提是设备处于横向状态:
CMRotationMatrix r = d.attitude.rotationMatrix;
transformFromCMRotationMatrix(cameraTransform, &r);
_heading = (M_PI + atan2(r.m32, r.m22))*180/M_PI;
有人可以帮助我实现这一目标吗?
非常感谢。