有没有人已经编写了iPhone指南针航向倾斜补偿程序?
我有一些方法,但是一些帮助或更好的解决方案将是很酷的!
第一的
我定义了一个向量Ev,该向量是根据Gv和Hv的叉积得出的。 Gv是我根据加速度计值构建的重力矢量,而Hv是根据磁力计值构建的航向矢量。
Ev垂直于Gv和Hv,因此正朝东向地平线移动。
第二
我定义了一个矢量Rv,它是根据叉积Bv和Gv计算得出的。 Bv是我的向量,它定义为[0,0,-1]。 Rv垂直于Gv和Bv,并始终显示在右侧。
第三
这两个向量Ev和Rv之间的夹角应该是我校正的方向。为了计算角度,我建立了点积及其弧度。
phi = arcos(Ev * Rv/| Ev | * | Rv |)
从理论上讲,它应该工作,但也许我必须归一化向量?
有人对此有解决方案吗?
谢谢,m01d
最佳答案
是的。您一定要规范化。
这是从我用来提取设备方向的代码中得出的。
重力是加速度计的x,y,z
并且从航向函数的x,y,z获得罗盘
gravity.normalize();
罗盘。规范化();
guideEast = gravity.cross(compass);
CompassEast.normalize();
指南针北= compassEast.cross(重力);
CompassNorth.normalize();
让我知道您是否需要完整的代码。
此外,对于那些尚未见过iphone 4s陀螺仪的人来说,它真是太神奇了!我将上面的输入交换为重力和罗盘,以换取陀螺仪的等效输入,结果是稳定,流畅和令人敬畏:)去苹果吧。
关于iPhone指南针倾斜补偿,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2529877/