ぷ~ろぐぷ~ろぐ身辺雑記、アニメ・マンガ、Jリーグ(特に新潟)のこととか。SensorManager#getOrientation()前のセンサの記事で方位と傾きの取得する方法として・getDefaultSensor()やgetSensorlist()でタイプをSensor.TYPE_ORIENTATIONに指定してセンサを取得するやり方を説明したが、これは現在は推奨されていない。現在推奨されているのはgetOrientation()を使用する方法である。リファレンス読んでもおいらの頭では理解不能^^;線形代数学の授業、全く理解できなかったからなあorz3Dグラフィックスやっている人には分かるのかな。GLとか3Dライブラリと親和性が高いとどこかに書いてあった。「お約束としてSensorManagerの3つのstaticメソッドgetRotationMatrix()、remapCoordinateSystem()、getOrientation()をこの順番で呼ぶ」と覚えることにした。remapCoordinateSystem()の第2、第3引数は、デバイスのX軸、Y軸がそれぞれ指している世界座標系の方向を指定する。getOrientation()で取得した方位・傾きはラジアンで、反時計回りで正の値。ラジアンはMath#toDegrees()で度に変換できる。「反時計回りで正」っていうのも良く分からない。デバイスを縦に持って左(反時計回り)に傾けたらロールが負の値になった。}}以下、3つメソッドのリファレンスの怪しい訳。geomagnetic)傾斜マトリックスIおよびベクトルをデバイス座標系から直接の正規直交基底として定義されている世界座標系に変換する回転マトリックスRを計算する。・Xはベクトル積YZ(これはデバイスの現在の位置で地面に接しほぼ東を指している)として定義されている。・Yはデバイスの現在の位置で地面に接し、磁北極の方向を指している。・Zは空の向きを指し地面に対して垂直である。デバイスが世界座標系にそろえられている場合、Rは単位行列(恒等行列?)である。デバイスのX座標が東を指している場合、Y座標が北極を指していてデバイスは空に面している。Iは重力(世界座標空間)と同じ座標空間に地磁気ベクトルを変換する回転行列である。IはX軸周りの単純な回転である。ラジアン単位の傾斜角度はgetInclination(float[])で計算することができる。-------------------------(訳すの面倒くさくなったので中略)-------------------------各行列の逆行列はその転置を取ることによって簡単に計算することができます。この関数によって返される行列は、デバイスが自由落下ではなく磁北に近くない場合にのみ意味がある。装置が加速される、または強力な磁場に置かれている場合、返される行列が不正確になることがある。R:この関数が帰った場合、回転行列Rを保持している浮動小数点数9個のarray。Rはnullもありうる。I:この関数が帰った場合、回転行列Iを保持している浮動小数点数9個のarray。Iはnullもありうる。gravity:デバイス座標で表される重力のベクトルを含む浮動小数点数3個のarray。単純にTYPE_ACCELEROMETERタイプのSensorのSensorEventによって返される値を使うことができる。geomagnetic:デバイス座標で表される地磁気のベクトルを含む浮動小数点数3個のarray。単純にTYPE_MAGNETIC_FIELDタイプのSensorのSensorEventによって返される値を使うことができる。成功の場合はtrue。失敗の場合はfalse(たとえば、デバイスが自由落下している)。失敗の場際、出力行列は変更されない。outR)与えられた回転行列を異なる座標系で表現されるように回転する。float[])参照)。ESで)のために使用される場合、普通はこの関数で変換することは必要ではない。その場合、現在の画面の回転を取得するためにDisplay.getRotation()を使用できる。ユーザーは一般的に画面を回転させるのは自由なので、ここで利用するパラメータを決定するには回転を頻繁に考慮しなければならないことに注意してください。上記の例では注意をせよ。この呼び出しは、回転角度を計算するときに、その自然の方向からの回転を計上するためにのみ必要です。回転行列がレンダリングのために使用されている場合も、変形は必要ない可能性もある、たとえばアクティビティがlandscapeモードで走っている場合。結果として得られる座標系は正規直交であるので、二つの軸だけを指定する必要があります。inR:変換される回転行列。float[])によって返される。X:デバイスのX軸がマッピングされる世界の軸と方向を定義する。Y:デバイスのY軸がマッピングされる世界の軸と方向を定義する。outR:変換された回転行列。inRとoutRは同じarrayかもしれない。それは性能の理由から推奨されない。入力パラメータが間違っている場合false。X軸とY軸が同じ軸の場合。inRとoutRが同じ長さではない場合。values)回転行列に基づいてデバイスの向きを計算する。valuesは次の結果が入れられる。:・values[0]:アジマス。・values[1]:ピッチ。・values[2]:ロール。使用されるリファレンス座標系は回転行列に対して定義された世界座標系とは異なる。・Xはベクトル積YZ(これはデバイスの現在の位置で地面に接しほぼ西を指している)として定義されている。・Yはデバイスの現在の位置で地面に接し磁北極の方向を指している。・Zは地球の中心法方向を指しており地面に対して垂直である。上記すべて3つの角度はラジアン単位で反時計回り方向に正である。float[])参照。テクノポップのカリスマ。