假設一個人使用這個指南針,並從90度開始,他們開始順時針或逆時針旋轉。保持完成360度旋轉的最佳方法是什麼?假設它們將從頭到尾只是順時針旋轉或僅逆時針旋轉。指南針 - 完整的360度旋轉的軌跡數
我不斷想出解決方案,如果開始的軸承是例如90度,我會在傳感器數據發生變化時繼續檢查下一個軸承,並且如果它始終沿着一個方向移動,我知道它們正在旋轉。如果他們繼續朝這個方向旋轉並將其恢復到90度,那麼這就是一次旋轉。我的方式似乎非常複雜,效率低下,我很難找到更好的方法。
在這種情況下,我會期待多個完整的旋轉。
我很感激任何幫助。謝謝!
我找到了this相關答案,我正在爲此編寫一個代碼示例。如果有人已經做了類似的事情,請發佈!
@Override
public void onSensorChanged(SensorEvent event)
{
switch(event.sensor.getType())
{
case Sensor.TYPE_GRAVITY:
{
mValuesAccelerometer = lowPass(event.values.clone(), mValuesAccelerometer);
break;
}
case Sensor.TYPE_MAGNETIC_FIELD:
{
mValuesMagneticField = lowPass(event.values.clone(), mValuesMagneticField);
break;
}
}
boolean success = SensorManager.getRotationMatrix(
mMatrixR,
mMatrixI,
mValuesAccelerometer,
mValuesMagneticField);
if (success)
{
SensorManager.getOrientation(mMatrixR, mMatrixValues);
float azimuth = toDegrees(mMatrixValues[0]);
float pitch = toDegrees(mMatrixValues[1]);
float roll = toDegrees(mMatrixValues[2]);
if (azimuth < 0.0d)
{
//The bearing in degrees
azimuth += 360.0d;
}
}
}