iPhone指南针倾斜补偿

标签 iphone accelerometer compass-geolocation tilt

有人已经编写了 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/

相关文章:

iphone - 如何识别 NSString 中单词的词性?

iphone - 如何在 AQClient 线程中追踪 iPad 应用程序的奇怪崩溃?

c - 倾斜磁力计输出 - 俯仰和滚动倾斜补偿 - 我迷路了

android - 第一个 Android 应用程序 - 如何访问指南针

android - 使用安卓手机测北

iPhone 指南针显示错误的航向俯仰角 > 约 45°

ios - 无论设备方向如何,物体都会落向地球

iphone - iOS 5.1 上的 ffmpeg undefined symbol 错误

iphone - 加速度计适用于 iphone/ipad 模拟器吗?

orientation - R如何为所有传感器注册SensorEventListener