1

我注意到 iPhone 上有一个非常令人费解的行为:

如果我垂直握住手机并倾斜它,指南针就会改变。

我已经计算出它的变化量与水平相同的倾斜量变化量相同(即:假设来自屏幕的矢量称为 Y,转动 Y 与iPhone 导致指南针变化)。

我想弥补这一点,我的应用程序不是为了让您将手机保持在水平位置(尽管我也计划允许 X 轴有一些倾斜,让我们称之为,从 10 度到 135 度)

但我真的不知道 iPhone 如何计算航向,因此航向矢量实际指向的位置......

4

1 回答 1

2

经过一些科学风格的实验,我发现:

iPhone有磁力计,它有3个轴,X,从屏幕从左到右。Y,从下往上。Z,从电话后面传到前面。

地球磁场正如物理定律所预期的那样不是一个球体,在我所在的位置(巴西),它倾斜了大约 30 度。(这意味着我必须将手机以 30 度角保持在零 2 轴上)。

计算北的一种可能技术是使用与磁场相切的矢量(即:磁力计报告给您的矢量)和重力的叉积。结果将是一个指向东方的向量。如果您希望可以在东和重力之间进行另一个叉积,从而产生一个指向北的向量。

要知道 iPhone 的传感器非常好,可以捕捉到每一个微小的波动和振动,因此最好使用低通滤波器来去除信号中的噪声。

iPhone 本身有一个复杂的程序来确定“真实航向”,我没有完全理解它,但它以某种方式使用加速度计来补偿倾斜。如果您愿意,您可以使用加速度计并进行补偿,例如,如果手机倾斜 70 度,您也可以将真实航向更改 70 度,结果将是手机忽略倾斜。

还有真航向的套路,验证iPhone是否倒置。如果我们将其视为水平,在您面前为 0,那么或多或少在 135 度处,它决定它是颠倒的,翻转结果。

请注意,相同的坐标系也适用于加速度计,允许在加速度计和磁力计数据之间使用矢量运算,而无需太多摆弄。

于 2011-03-23T18:13:06.377 回答