1

我正在尝试获取设备的 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;

有人可以帮助我实现这一目标吗?

非常感谢。

4

0 回答 0