Je souhaite utiliser the values that Android's SensorEvent provides pour calculer les mêmes valeurs que celles spécifiées pour DeviceMotionEvent.Calcul des valeurs DeviceMotionEvent pour Android
Mon problème est la partie dans la documentation Android qui fait référence à Gx, Gy, Gz:
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];
}
Que sont censés être des valeurs du tableau gravity
référencé dans ce code? Il mentionne également alpha
, mais je ne comprends toujours pas ce que c'est/représente, comment l'équation fonctionne (Qu'est-ce qu'un filtre passe-bas? Comment déterminez-vous la "constante de temps"? ?), ou pourquoi il a même été réglé (tout à fait arbitrairement) à 0.8.
Je manque évidemment au département de physique, mais je comprends les maths. Donc, si quelqu'un serait si gentil d'expliquer le raisonnement de la physique derrière, je serais très obligé. Je sais qu'il y a des explications des termes sur les pages que j'ai liées, mais ils n'ont toujours pas de sens dans mon esprit, sauf que les termes correspondent aux images des axes sur lesquels l'appareil est en accélération ou en rotation.