0

最高のピッチとロール値を取得したい。私はすでにそのコードを使用して方位角の値を取得しています。

ピッチとロールの値が良くないようです。

@Override
    public void onSensorChanged(SensorEvent event) {

        switch (event.sensor.getType()) {

            case Sensor.TYPE_ROTATION_VECTOR:
                // calculate th rotation matrix
                SensorManager.getRotationMatrixFromVector(rMat, event.values);

                float[] data = SensorManager.getOrientation(rMat, orientation);

                Log.i(TAG, "NEW pitch?="+data[1]+" roll="+data[2]);

                // do something with data

                break;
        }

私は拡張現実環境(Jmonkeyエンジンを使用)でそのコードを使用して、電話の位置に応じて3Dオブジェクトを移動しています:

public void updateRotationFused(float pitch, float roll) {
    //pitch: cams x axis roll: cams y axisheading: cams z axis
    mRotXYZQ.fromAngles(pitch + FastMath.HALF_PI , roll - FastMath.HALF_PI, 0);
    mCurrentCamRotationFused = mInitialCamRotation.mult(mRotXYZQ);
}

私が逃したものはありますか?

編集

アプリで既に使用されているコードは、このリンクからのものです

Sensor.TYPE_ROTATION_VECTORそれは機能しますが、より良い方法だと思います。

4

1 に答える 1