1

iPhone で非常に不可解な動作に気付きました。

電話を縦にして傾けると、コンパスが変わります。

私はすでに、それが水平にある場合に同じ量の傾斜に対して変化する量と同じ量であると考えました(つまり、画面から来るベクトルがYと呼ばれるとします。Yの周りを回すことは、 iPhone ではコンパスが変わります)。

それを補いたいのですが、私のアプリは、携帯電話を水平に持つようには作られていませんでした (ただし、X 軸の傾きを許容することも計画していますが、10 度から 135 度までとしましょう)。

しかし、iPhoneがどのように見出しを計算するのか、つまり、見出しベクトルが実際にどこを指しているのか本当にわかりませんでした...

4

1 に答える 1

2

いくつかの科学的なスタイルの実験の後、次のことがわかりました。

iPhone には磁力計があり、画面の左から右に向かう 3 つの軸 X があります。ええ、それは下から上に行きます。そしてZ、それは電話の後ろから来て、前に来ます.

地球の磁場は、物理法則から予想されるとおり、球体ではありません。私のいる場所 (ブラジル) では、約 30 度傾いています。(つまり、電話をゼロ 2 軸に対して 30 度の角度で保持する必要があります)。

北を計算する 1 つの可能な手法は、磁場に接するベクトル (つまり、磁力計が報告するベクトル) と重力の外積を使用することです。結果は、東を指すベクトルになります。必要に応じて、東と重力の間に別の外積を作成して、北を指すベクトルを作成できます。

iPhone のセンサーは非常に優れており、あらゆる小さな変動や振動が捕捉されるため、信号からノイズを除去するためにローパス フィルターを使用することをお勧めします。

iPhone 自体には、「真の方向」を決定するための複雑なルーチンがあります。私はそれを完全には理解していませんが、何らかの方法で加速度計を使用して傾きを補正しています。加速度計を使用して、必要に応じて元に戻すことができます。たとえば、電話が 70 度傾いている場合、真の方向を 70 度変更することもできます。その結果、電話は傾きを無視します。

真方位のルーティーンでもある、iPhoneが逆さまになっていないか確認。水平で、目の前を 0 として考えると、135 度で多かれ少なかれ上下逆であると判断され、結果が反転します。

同じ座標系が加速度計にも適用されることに注意してください。これにより、加速度計と磁力計のデータの間でベクトル操作を使用することができます。

于 2011-03-23T18:13:06.377 に答える