我正在尝试解决与设备运动相关的看似简单的问题,但无法弄清楚如何解决它。我有一种情况是iPhone会在x-y平面上移动一圈。我需要找到iPhone的x和y轴相对于旋转中心的角度。 iPhone可以处于纵向模式或横向模式,或者相对于将iphone连接到旋转中心的线之间的任何角度。请参阅解释该场景的附图。
无论此角度如何,给定旋转的偏航变化都是相同的,因此这并没有真正帮助。我希望能有一些关系,我可以计算每一个小旋转,然后找到最适合整个动作 - 但还不能弄明白。
我感谢任何帮助或指示。
答案 0 :(得分:0)
(我用伪代码编写,因为我不知道你正在使用的API,抱歉。)
以下是如何获得旋转的轴和角度。
直接从API获取旋转开始和结束时的旋转矩阵R1
和R2
(请参阅CMAttitude和CMRotationMatrix)。然后,确定使angle
与axis
对齐的轮换R
的{{1}}和R1
。您得到R2
如下:
R
旋转角度R = R1 * transpose(R2)
是
R
,其轴为
angle = acos((trace(R)-1)/2)
有关详细信息,请查看Rotation matrix to axis angle以及Axis-angle。
我不确定如何获得你感兴趣的角度。不过,我希望以上有所帮助。
除了显示器外,请不要使用滚动,俯仰和偏航。并且不要试图整合它们,没有任何好处会出来。
无论如何,在旋转矩阵后面有集成。换句话说,有人已经为你做了整合。