有人已经编写了 iPhone 罗盘航向倾斜补偿程序吗?
我有一些方法,但一些帮助或更好的解决方案会很酷!
第一 我定义一个向量 Ev,由 Gv 和 Hv 的叉积计算得出。 Gv 是根据加速度计值构建的重力矢量,Hv 是根据磁力计值构建的航向矢量。 Ev 与 Gv 和 Hv 垂直,因此它正在向水平方向的东方移动。
第二 我定义一个向量 Rv,由 Bv 和 Gv 的叉积计算得出。 Bv 是我的观察向量,它被定义为 [0,0,-1]。 Rv 垂直于 Gv 和 Bv,并且始终显示在右侧。
第三 这两个向量 Ev 和 Rv 之间的角度应该是我修正后的航向。为了计算角度,我构建了点积及其arcos。
phi = arcos (Ev * Rv/|Ev| * |Rv| )
理论上它应该有效,但也许我必须标准化向量?!
有人能解决这个问题吗?
谢谢,m01d
最佳答案
是的。你绝对必须正常化。 这是来 self 用来提取设备方向的代码。 重力通过加速度计的 x、y、z 获得 指南针是从航向函数的x,y,z得到的
gravity.normalize();
指南针.normalize();
compassEast=gravity.cross(compass);
compassEast.normalize();
罗盘北=罗盘东.cross(重力);
compassNorth.normalize();
如果您需要完整的代码,请告诉我。 另外,对于那些还没有见过 iphone 4s 陀螺仪运转的人来说:太神奇了!我将上面的重力和指南针输入替换为陀螺仪的等效输入,结果稳定、流畅且非常棒:) Go Apple。
关于iPhone指南针倾斜补偿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2529877/