「回転ベクトルセンサー」の出力を正しく使用する方法を知りたいと思います。現在、私は次のことを考え出し、デバイスがどこを指しているのかを知るために、横向きモードで横になっているresult[]
からヨーとピッチを計算したかったのです。しかし、私は結果に問題があります。ヨー演算はきわめて正確ですが、ピッチは奇妙な動作をしています。データの使い方を誰かが正しい方向に向けることができるかもしれません。私が知りたいもう一つのことは、デバイスの向き(横または縦)がこのセンサーの出力に影響を与えるかどうかということです。前もって感謝します。回転ベクトルセンサーの使用
private double max = Math.PI/2 - 0.01;
private double min = -max;
private float[] rotationVectorAction(float[] values) {
float[] result = new float[3];
float vec[] = values;
float quat[] = new float[4];
float[] orientation = new float[3];
SensorManager.getQuaternionFromVector(quat, vec);
float[] rotMat = new float[9];
SensorManager.getRotationMatrixFromVector(rotMat, quat);
SensorManager.getOrientation(rotMat, orientation);
result[0] = (float) orientation[0];
result[1] = (float) orientation[1];
result[2] = (float) orientation[2];
return result;
}
private void main() {
float[] result = rotationVectorAction(sensorInput);
yaw = result[0];
pitch = result[1];
pitch = (float) Math.max(min, pitch);
pitch = (float) Math.min(max, pitch);
float dx = (float) (Math.sin(yaw) * (-Math.cos(pitch)));
float dy = (float) Math.sin(pitch);
float dz = (float) (Math.cos(yaw) * Math.cos(pitch));
}
とOpenGL ES 2.0に私の周りに私のカメラを移動するために、これを設定します。
Matrix.setLookAtM(mVMatrix, 0, 0, 0, 0, dx, dy, dz, 0, 1, 0);
コードを追加できますか?お願いします。 –