有谁能给出一些想法,通过加速度计的x、y、z值计算指南针应该旋转多少角度才能指向重力方向?
我认为当指南针指向地球时,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;
}
}
accelerometerMaxRange
是多少呢? ;) - Tony Bogdanov