我想创建一个增强现实视图,它将指向一个方向的对象.但是,当您面向相机时,CoreLocation标题无法正常工作(当您在一楼时,请指向20层楼的顶部).
它给出了相反的方向(可能是指向电话顶部的方向).
我尝试了一些方法让它适用于相机指向的方向,例如:
1,设备方向> 45度时+180度(不够准确,突然方向偏离10~20度)
2,尝试使用CMMotionManager使用以下教程中的公式进行计算. http://www.loveelectronics.co.uk/Tutorials/13/tilt-compensated-compass-arduino-tutorial.
3,尝试使用ios deviceMotion.magneticField和deviceMotion.gravity来模拟来自android的逻辑.
4,使用旋转矩阵(堆栈中的其他一些帖子溢出,但不准确)
double heading = M_PI + atan2(self.altitudeData.rotationMatrix.m22, self.altitudeData.rotationMatrix.m12);
heading = heading*180/M_PI;
Run Code Online (Sandbox Code Playgroud)
我不知道还有什么可以尝试让它正确.我知道有一些应用程序(一些可以看到太阳和星星的应用程序)正确地做到了.