Google の Project Tango デバイスを使用して屋内位置情報アプリを開発しています。ADF マップに関してデバイスの向きを UI に表示したいと考えています。
この目的のために、TangoPoseData から Z 軸の回転情報にアクセスし、回転データを度単位の角度に変換しようとしています。
TangoPoseData の回転情報は次のように定義されています。
z = RotationAxis.z * sin(RotationAngle / 2)
私のコードは次のようになります。
//Sine value of the angle
double tangoRotationZsin = pose.rotation[2];
//Convert the sine value into a angle in radians
double tangoRotationZRad = 2*Math.asin(tangoRotationZsin);
//Convert to an angle in degrees
double tangoRotationZDeg = tangoRotationZRad * 180/Math.PI;
問題:
度単位の角度値 (tangoRotationZDeg) は -180 ~ 180 の範囲である必要がありますが、Z 軸でデバイスを 360 度回転させても、角度の範囲は -120 ~ 120 度 (または場合によっては -110 ~ 110度)。
私は何が欠けていますか?
この問題は、私のコードでは 1 に等しいと仮定している TangoPoseData の "RotationAxis.z" 係数と関係があると思いますが、よくわかりません。
助けてくれてありがとう!