Расчет угла акселерометра Android

Может ли кто-нибудь дать какую-нибудь идею, чтобы рассчитать угол, на который стрелка компаса должна быть повернута, чтобы указать в направлении силы тяжести от значений акселерометра x, y, z?


person Nijo    schedule 31.03.2012    source источник


Ответы (1)


Я думаю, что X должен быть равен 0, а y должен быть положительным, в то время как z близок к 0, чтобы компас указывал на землю. (Что означает, что телефон удерживается вертикально).

В общем, от угла 0 угол компаса должен быть примерно таким

float accelerometerMaxRange = 10; // This is NOT right, but it's a good value to work with
float newAngle = 0;
if (z > 9) {
    // Phone is horizontally flat, can't point towards gravity, really. Do whatever you think is right
} else {
    newAngle  = (float)(x * 90 / accelerometerMaxRange);
    if (y < 0) {
        newAngle = 180 - newAngle;
    }
}
person Eliram    schedule 07.04.2012
comment
Главный вопрос в том, сколько стоит accelerometerMaxRange ;) - person Tony Bogdanov; 25.06.2013