我想获得最佳的俯仰和横滚值。我已经在使用该代码来获取方位角值。
俯仰和横滚值似乎不太好。
@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
是更好的方法。