0

我正在尝试解决与设备运动相关的看似简单的问题,但不知道如何解决。我有一种情况,iPhone 会在 xy 平面上绕圈移动。我需要找到 iPhone 的 x 轴和 y 轴之间相对于旋转中心的角度。iPhone 可能处于纵向模式或横向模式,或者处于相对于将 iphone 连接到旋转中心的线之间的任何角度。请参阅解释该场景的附图。

无论这个角度如何,给定旋转的偏航变化都是相同的,所以这并没有真正的帮助。我希望我可以为每个小旋转计算一些关系,然后找到最适合整个运动的关系 - 但还不能弄清楚。

我感谢任何帮助或指示。

在此处输入图像描述

4

1 回答 1

0

(我用伪代码编写,因为我不知道您使用的 API,抱歉。)

以下是如何获得旋转的轴和角度。

直接从 API获取旋转矩阵R1以及旋转R2开始和结束的位置(请参阅 CMAttitude 和 CMRotationMatrix)。然后,确定angle与对齐axis的旋转的和。你得到如下:RR1R2R

R = R1 * transpose(R2)

旋转角度R

angle = acos((trace(R)-1)/2)

它的轴是

axis = { R[3][2]-R[2][3], R[1][3]-R[3][1], R[2][1]-R[1][2] }

有关更多详细信息,请检查Rotation matrix to axis angleAxis-angle


我不确定如何获得您感兴趣的角度。不过,我希望以上内容有所帮助。


请不要使用除显示之外的任何滚动、俯仰和偏航。并且不要试图整合它们,不会有好的结果。

无论如何,在旋转矩阵的背后有整合。换句话说,有人已经为您完成了集成。

于 2013-08-05T22:57:17.713 回答