5

そのため、SensorEventのドキュメントを調べて、電話の特定の軸を基準にして、北の方向を把握する方法を理解しようとしています。座標系がどのように機能するかについての私の概念を説明する小さな画像を描きました。

私の座標系の概念

したがって、世界座標がxyzであり、磁北がzに沿っており、yが空を指し、電話の座標がPxPyPzである場合、投影を計算できるようにしたいと思います。各ベクトルを他のベクトルに変換します。

SENSOR_TYPE_ROTATION_VECTORは正しいもののように見えますが、これらすべての予測を取得するのに十分な情報が得られていないようです。ROTATION_VECTORを正規化し、それを気になる軸に追加してから、コンポーネントを引き出すことになっていますか?

もう1つの大きな単一センサーはSENSOR_TYPE_ORIENTATIONのようですが、これらの値をどう処理するかがわかりません。実世界の座標系のPyへの3つの投影を知りたい場合は、次のように、指定された座標に沿って[0、1、0]を回転します。

// Assume here that I've received values
// and broken them out into 
// a = azimuth
// p = pitch
// r = roll

// Convert to radians
a = a*Math.Pi/180;
p = p*Math.PI/180;
r = r*Math.PI/180;

// Given that Py is initially 0, 1, 0, apply general rotation matrix:
float[] Py = new float[3];
Py[0] = -Math.cos(p)*Math.sin(a) + Math.sin(p)*Math.sin(r)*Math.cos(a);
Py[1] = Math.cos(p)*Math.cos(a) + Math.sin(p)*Math.sin(r)*Math.sin(a);
Py[2] = Math.sin(p)*Math.cos(a);

一般的な回転の式からこれらの式を取得したところ(単位ベクトルを回転しているため、中央の列を選択するだけです)。変数Pyの成分は、xyzのPyへの射影になると思いますが、それは逆になりますか?代わりに、3つの実世界の軸のそれぞれへのPyの投影ですか?

最後に、getRotationMatrixFromVector()オプションがあることに気づきました。これは、これらの予測を計算するように見えますが、完全に逆方向にあるかどうかはわかりません。xの3つの射影を知りたい場合。yzPyに追加しますが、回転行列の2番目の列、または2番目の行を取得しますか?

(おそらく非常に単純な質問の非常に言葉の多いバージョンについては申し訳ありませんが、将来の混乱している人々にとっては、私の主要な混乱のポイントである座標系について非常に明確にする方が良いと思います)。

4

0 に答える 0