ios – 将世界转换为对象坐标

iPhone陀螺仪接收相对于某些参考姿态的旋转数据并且它不会改变(除非成倍增加.)假设我使用我的iPhone相机面向墙壁,并向左旋转45度(滚动= PI / 4).

现在,如果我将手机抬向天花板,由于坐标空间是固定的,因此偏航和俯仰都会发生变化(世界坐标空间,不会随着手机移动或旋转.)有没有办法确定这个角度(两者之间)地板平面和摄像机方向矢量),滚动,偏航和俯仰给出?

编辑:我会在这里尝试而不是打开另一个问题. Luc的解决方案有效.但是如何获得另外两个旋转角度?我已经阅读了发布链接上的信息,但是我学习线性代数已经有好几年了.实际上,这可能比编程问题更重要.

最佳答案 我真的没有为iPhone编码,所以我会相信你的“真实世界坐标”框架.

在这种情况下,您需要两个z轴向量之间的点积.这将给你你正在寻找的角度的余弦,因此非常接近.由于平面之间的角度仅在0°和90°之间的值上才有意义,因此您实际上拥有了该余弦所需的所有信息.

而且这里没有乳胶格式,否则我会详细介绍一下,但是如果你感兴趣的话,read this page我会在这里包含最终结果,旋转矩阵为你的三个旋转:

现在水平平面的z轴向量是(0,0,1)(虽然读作垂直向量)并且用这个矩阵旋转,你只需得到它的第三列.

所以我们想要在第三列和我们的(0,0,1)向量之间得到点积,这样得到cos(β)cos(γ)即cos(pitch)* cos(roll)

总之,你的计划之间的角度是arccos(cos(pitch)* cos(roll)).这个值会告诉你iPhone的倾向程度,当然不是在哪个方向.但是你可以从我们谈到的向量值(矩阵的最右边的列)中解决这个问题.

点赞