SOで同様の質問を見たことがありますが、答えはありませんでした...本当にばかげた質問か、無意味な質問につながるばかげたエラーだと思います。プログラミングの質問というより数学関連の質問だと思います。とにかく、私は2週間苦労しているので、助けてくれることを願っています!
M=SensorManager.getRotationMatrix() を使用して、デバイス システムの「静的」ベクトル (座標はワールド システムの定数) の座標を見つけたいと思います。opengl でマトリックスを使用するとすべてうまくいきますが、自分でコードを書こうとすると、理解できない値が得られます。
たとえば、デバイス画面の中心から北を指すベクトルがあります。y としましょう。ワールド座標系での y の座標は y(0,1,0) であり、変化しません。しかし、これらの座標値は、デバイスを回転させるとデバイス システムで変化し、y'(y1,y2,y3) になります。y1、y2、y3を知りたいです。
y' = M*y を試しましたが、得られる値がわかりません。デバイスを回転させたときに予想される値と一致しません。デバイスの y ベクトル (カメラを指す) を回転させて、地球の磁北に合わせ、取得した座標がデバイスのシステムになると考えました。実際、opengl.multmatrix で行列を使用すると、このようなことが起こります。ベクトルは回転し、常に北を向いています。
また、トランス パッドを使用していて、実際にはカメラの方を向いているのは x ベクトルであるように見えるため、回転行列の再マッピングも試みました。しかし、y' 値も私が期待したものではなく、opengl でそれを行う必要はありませんでした。
では、opengl の仕事を手作業で行いたい場合、理論に欠けているものと、実際に M*y とは何ですか? 私が実際に望んでいるのは、ベクトルを表現したシステムを変更することなので、M 転置を使用する必要がありますか? (私もそれを試みましたが、失敗しました)。詳細な回答は大歓迎です...ありがとう。