android – 使用加速度计计算旋转矩阵

我目前面临更多的数学问题.我正在开发一个对X轴和Y轴加速感兴趣的应用程序.换句话说,我想跟踪左右或前后加速.

如果设备躺在桌子上面朝上,则在这些轴的加速度值中可以看到所需方向上的所有加速度.出现的问题是设备没有放置在这样的位置并且围绕X或Y轴(俯仰,滚动)具有一定的旋转.

我需要一个旋转矩阵(Rm),我可以将其乘以一个测量加速度(x)向量,以获得一个新的校准向量(x’),其他类可以使用:x’= Rm * x.这应该从参考矢量(0,0,-1)和设备的当前重力矢量计算出来.

我知道它与欧拉角有关,但我无法弄清楚如何计算这些并用这些来创建我的旋转矩阵.我也知道CMAttitude类中有一个旋转矩阵,但我想更深入地了解如何计算这些矩阵.

例:

想象一下,你想弄清楚你的自行车刹车有多难.如果您的iPhone安装在自行车上并且显示屏指向笔直,您可以读取加速度矢量y值的加速度.您项目中的其他类别假设制动时的加速度始终可以在此值中看到.

问题是当iPhone被放置在纵向视图中时,显示器指向你.然后制动不会增加y值而是增加z值.因此,您必须围绕x轴旋转加速度值-90度.

我需要这个旋转矩阵来任意旋转设备.我知道不可能从重力矢量计算绕z轴的旋转,但是当x和y旋转被否定时,我很好.

非常感谢你的帮助

最佳答案 要计算欧拉角,您需要计算参考矢量和当前重力矢量之间的角度.

http://chemistry.about.com/od/workedchemistryproblems/a/scalar-product-vectors-problem.htm

之后旋转矩阵非常简单.
http://en.wikipedia.org/wiki/Rotation_matrix

注意我确信有很多简单的方法可以在ios和android中执行此操作,而无需手动进行这些计算.这个答案就是几何体的运作方式.

点赞