加速度計のみを使用してデバイスの向きを取得するコードを作成しました。しかし、2 つの角度が同時に変化しています。パン、チルト、チルト ロール、またはロール パンを意味します。なぜそれが起こっているのですか?
public void onSensorChanged(SensorEvent event) {
switch (event.sensor.getType()) {
case Sensor.TYPE_ACCELEROMETER:
System.arraycopy(event.values, 0, mGravs, 0, 3);
break;
default:
return;
}
X=mGravs[0];
Y=mGravs[1];
Z=mGravs[2];
if(i==1){
R=Math.sqrt(X*X+Y*Y+Z*Z);
pan1=Math.round((180/Math.PI)*Math.acos(X/R)) ;
tilt1=Math.round((180/Math.PI)*Math.acos(Y/R)) ;
roll1=Math.round((180/Math.PI)*Math.acos(Z/R));
i=0;
}
else{
R=Math.sqrt(X*X+Y*Y+Z*Z);
pan=Math.round((180/Math.PI)*Math.acos(X/R))-pan1;
tilt=Math.round((180/Math.PI)*Math.acos(Y/R))-tilt1;
roll=Math.round((180/Math.PI)*Math.acos(Z/R))-roll1;
text.setText("Angle X" +pan+"\nAngle Y" +tilt+"\nAngle Z" +roll);
}
}