iphone指南针倾斜补偿

use*_*606 6 iphone accelerometer tilt compass-geolocation

有没有人已经编程了iphone罗盘标题倾斜补偿?

我有一些方法,但一些帮助或更好的解决方案将是很酷的!

首先,我定义一个向量Ev,由Gv和Hv的叉积计算得出.Gv是由加速度计值构建的重力矢量,Hv是构建磁力计值的标题矢量.Ev与Gv和Hv垂直,因此它正朝着东方的方向前进.

SECOND我定义了一个向量Rv,由交叉积Bv和Gv计算得出.Bv是我的向量,它被定义为[0,0,-1].Rv垂直于Gv和Bv并始终显示在右侧.

第三,这两个向量Ev和Rv之间的角度应该是我的校正标题.计算角点i构建点积和arcos.

phi = arcos(Ev*Rv/| Ev |*| Rv |)

理论上它应该可以工作,但也许我必须规范化向量?!

有没有人为此得到解决方案?

谢谢,m01d

twe*_*ter 3

是的。你绝对必须正常化。这是来自我用来提取设备方向的代码。重力是通过从航向函数的 x,y,z 获得加速度计和指南针的 x,y,z 获得的

重力.归一化(); 指南针.normalize(); compassEast=gravity.cross(compass);
compassEast.normalize();
罗盘北=罗盘东.cross(重力); compassNorth.normalize();

如果您需要完整的代码,请告诉我。另外,对于那些还没有见过 iphone 4s 陀螺仪运转的人来说:太神奇了!我将上面的重力和指南针输入替换为陀螺仪的等效输入,结果稳定、流畅、很棒:) Go Apple。