【发布时间】:2011-11-09 02:08:41
【问题描述】:
我正在做这个项目,其中一部分需要我获取手机(android)在每个轴上的加速度值。因此,例如,无论手机如何放置,z 轴上的加速度值,如果手机静止,则应为 9.8,沿其他轴应为 0。 现在我经历了很多线程来让它正常工作。 我尝试按照here的建议进行操作
trueacceleration[0] =(float) (accelerometervalues[0]*(Math.cos(orientationvalues[2])*Math.cos(orientationvalues[0])+Math.sin(orientationvalues[2])*Math.sin(orientationvalues[1])*Math.sin(orientationvalues[0])) + accelerometervalues[1]*(Math.cos(orientationvalues[1])*Math.sin(orientationvalues[0])) + accelerometervalues[2]*(-Math.sin(orientationvalues[2])*Math.cos(orientationvalues[0])+Math.cos(orientationvalues[2])*Math.sin(orientationvalues[1])*Math.sin(orientationvalues[0])));
trueacceleration[1] = (float) (accelerometervalues[0]*(-Math.cos(orientationvalues[2])*Math.sin(orientationvalues[0])+Math.sin(orientationvalues[2])*Math.sin(orientationvalues[1])*Math.cos(orientationvalues[0])) + accelerometervalues[1]*(Math.cos(orientationvalues[1])*Math.cos(orientationvalues[0])) + accelerometervalues[2]*(Math.sin(orientationvalues[2])*Math.sin(orientationvalues[0])+ Math.cos(orientationvalues[2])*Math.sin(orientationvalues[1])*Math.cos(orientationvalues[0])));
trueacceleration[2] = (float) (accelerometervalues[0]*(Math.sin(orientationvalues[2])*Math.cos(orientationvalues[1])) + accelerometervalues[1]*(-Math.sin(orientationvalues[1])) + accelerometervalues[2]*(Math.cos(orientationvalues[2])*Math.cos(orientationvalues[1])));
但这给了我一些完全不同的东西,并且随着我移动手机而改变。 知道什么应该是正确/最简单的方法吗?
【问题讨论】:
-
"如果手机静止,则应为 9.8,沿其他轴应为 0。"我不明白,如果手机静止,加速度计不会报告任何内容。
-
@Glenn.nz:如果手机静止,加速度计将只返回重力加速度
-
否——可能有一个力作用在手机上,但如果它不动,就不会加速。如果你放下手机,你会看到你的 9.8。
标签: java android math coordinates accelerometer