我注意到iPhone上的一个非常令人费解的行为:
如果我将手机垂直放置并倾斜,指南针会改变。
我已经知道它改变的数量与相同倾斜量的变化量相同(如果它是水平的)(即:假设来自屏幕的矢量被称为Y,转向Y无关紧要iPhone的态度导致罗盘变化。)
我想补偿一下,我的应用程序不是让你把手机放在水平方向上(虽然我的确计划允许在X轴上进行一些倾斜让我们称之为,从10度到135度)
但是我真的无法想象iPhone如何计算航向,因此标题向量实际指向了......
答案 0 :(得分:2)
经过一些科学的实验,我发现:
iPhone有磁力计,它有3个轴X,从屏幕左右移动。 Y,从下到上。和Z,来自手机后面,来到前面。
地球磁场是物理定律而非球体的预期,在我所在的位置(巴西),它倾斜约30度。 (这意味着我必须将手机保持30度角到零2轴)。
计算北方的一种可能技术是使用与磁场相切的矢量的交叉乘积(即:磁力计向您报告的矢量)和重力。结果将是一个指向东方的向量。如果你希望你可以在东方和重力之间产生另一个交叉积,产生一个指向北方的向量。
知道iPhone传感器非常好,并且每次轻微的波动和振动都会被捕获,因此最好使用低通滤波器来消除信号中的噪声。
iPhone本身有一个复杂的例程来确定“真正的标题”,我没有完全理解它,但它以某种方式使用加速度计来补偿倾斜。您可以使用加速度计并根据需要进行补偿,例如,如果手机倾斜70度,您也可以将真实航向改变70度,结果将是手机忽略倾斜。
也是真正标题的例行程序,验证iPhone是否颠倒过来。如果我们将它视为水平,在你面前为0,那么或多或少在135度时它会决定它是颠倒的,翻转结果。
请注意,相同的坐标系也适用于加速度计,允许在加速度计和磁力计数据之间使用矢量运算,而不需要太多的摆弄。