Android getRotationMatrix和getOrientation原理

Android getRotationMatrix和getOrientation原理

1、getRotationMatrix

这个我也是参考的一篇cnbolg上的一篇文章,链接在这,就不搬运了。Android中SensorManager.getRotationMatrix函数原理解释http://www.cnblogs.com/zuoxiaofei/p/4244238.html

2、getOrientation

这个的话我先是在知乎上找到了一篇文章,https://www.zhihu.com/question/33565613,但是该文章并没有给出旋转矩阵怎么推导的,下面再给出三维旋转矩阵的公式的推导的过程链接。 三维旋转矩阵推导:http://blog.csdn.net/yhl_leo/article/details/50732966

3 我的理解

getRotationMatrix的参数有手机的(重力)加速度数据和磁传感器数据,按照我的理解重力加速度(g)的方向就是指向地心,垂直于水平面,磁力(m)的方向应该是南北方向,这两个向量叉乘得到了一个东西方向的向量(we),然后该向量重力加速的的向量都归一化,再做叉乘又得到一个水平南北方向的的向量(sn),g与we,sn两两正交,组成了大地坐标系。而这三个向量组成的矩阵自然也就是旋转矩阵。然后和三维旋转矩阵推导出的含有航向角(方向角)、倾斜角、旋转角的旋转矩阵一一对应,就可以求出相应的角度。

其他参考链接
a 旋转矩阵(Rotate Matrix)的性质分析:
http://blog.csdn.net/zhang11wu4/article/details/49761121
b 关于Euler angles:https://en.wikipedia.org/wiki/Euler_angles

结语:虽然都是搬运,但是整理了一下供需要的人参考吧,毕竟自己在查的时候也找的焦头烂额。

你可能感兴趣的:(android学习)