いくつかの科学的なスタイルの実験の後、次のことがわかりました。
iPhone には磁力計があり、画面の左から右に向かう 3 つの軸 X があります。ええ、それは下から上に行きます。そしてZ、それは電話の後ろから来て、前に来ます.
地球の磁場は、物理法則から予想されるとおり、球体ではありません。私のいる場所 (ブラジル) では、約 30 度傾いています。(つまり、電話をゼロ 2 軸に対して 30 度の角度で保持する必要があります)。
北を計算する 1 つの可能な手法は、磁場に接するベクトル (つまり、磁力計が報告するベクトル) と重力の外積を使用することです。結果は、東を指すベクトルになります。必要に応じて、東と重力の間に別の外積を作成して、北を指すベクトルを作成できます。
iPhone のセンサーは非常に優れており、あらゆる小さな変動や振動が捕捉されるため、信号からノイズを除去するためにローパス フィルターを使用することをお勧めします。
iPhone 自体には、「真の方向」を決定するための複雑なルーチンがあります。私はそれを完全には理解していませんが、何らかの方法で加速度計を使用して傾きを補正しています。加速度計を使用して、必要に応じて元に戻すことができます。たとえば、電話が 70 度傾いている場合、真の方向を 70 度変更することもできます。その結果、電話は傾きを無視します。
真方位のルーティーンでもある、iPhoneが逆さまになっていないか確認。水平で、目の前を 0 として考えると、135 度で多かれ少なかれ上下逆であると判断され、結果が反転します。
同じ座標系が加速度計にも適用されることに注意してください。これにより、加速度計と磁力計のデータの間でベクトル操作を使用することができます。