Android Pitch and Roll Issue

后端 未结 4 1475
情话喂你
情话喂你 2021-01-03 06:17

I am working on a tilt app for Android. I am having an issue with Portrait & landscape mode. When the pitch = 90 degrees (phone on end) and even slightly before the ro

4条回答
  •  情话喂你
    2021-01-03 07:08

    Through experimentation I found that when you switch from Portrait to Landscape mode your rotation matrix doesn't change but you have to change it manually in order to use with OpenGL correctly

    copyMat(mRotationMatrixP, mRotationMatrix);
    
    // permute and negate columns 0, 1
    mRotationMatrixP[0] = -mRotationMatrix[1];
    mRotationMatrixP[4] = -mRotationMatrix[5];
    mRotationMatrixP[8] = -mRotationMatrix[9];
    
    // permute 1, 0
    mRotationMatrixP[1] = mRotationMatrix[0];
    mRotationMatrixP[5] = mRotationMatrix[4];
    mRotationMatrixP[9] = mRotationMatrix[8];
    

    Also I hope you acquire the Rotation Matrix correctly on the first place:

    public void onSensorChanged(SensorEvent event) {
        if (event.sensor.getType() == Sensor.TYPE_ROTATION_VECTOR) {
            SensorManager.getRotationMatrixFromVector(
                    mRotationMatrix , event.values);
            SensorManager.getOrientation (mRotationMatrix, values);
    

提交回复
热议问题