Android の SensorEvent が提供する値を使用して、 DeviceMotionEventに指定されているのと同じ値を計算したいと思います。
私の問題は、Gx、Gy、Gz を参照する Android ドキュメントの一部です。
public void onSensorChanged(SensorEvent event)
{
// alpha is calculated as t / (t + dT)
// with t, the low-pass filter's time-constant
// and dT, the event delivery rate
final float alpha = 0.8;
gravity[0] = alpha * gravity[0] + (1 - alpha) * event.values[0];
gravity[1] = alpha * gravity[1] + (1 - alpha) * event.values[1];
gravity[2] = alpha * gravity[2] + (1 - alpha) * event.values[2];
linear_acceleration[0] = event.values[0] - gravity[0];
linear_acceleration[1] = event.values[1] - gravity[1];
linear_acceleration[2] = event.values[2] - gravity[2];
}
gravity
そのコードで参照されている配列の値は何ですか? についても言及されていますalpha
が、それが何であるか/表しているのか、方程式がどのように機能するのかまだわかりません(ローパスフィルターとは何ですか?「時定数」はどのように決定しますか?測定しても「配信率」は何ですか? )、または(まったく恣意的に)0.8に設定された理由.
私は明らかに物理学科に欠けていますが、数学は理解しています。誰かが背後にある物理学の推論を説明してくれるとしたら、私はとても助かります. リンクしたページに用語の説明があることは知っていますが、デバイスがどの軸に沿って加速または回転しているかの写真と用語が一致することを除いて、まだ意味がありません。