变换三维旋转

时间:2017-10-12 12:07:10

标签: math matrix 3d scenekit quaternions

首先,我刚开始研究旋转,四元数和矩阵,所以请原谅我已经误解了一些我现在误解的部分。

情况:

OSX SceneKit应用程序。

我有一个3D空间,X +右,Y +前进,Z +上。

在这个空间里面我有一个磁盘:

  • 中心{x:2.0,y:2.0 z:2.0}
  • Radius 2.0

在这个弧的中心,我做了一些控制,我可以在所有3个轴上设置旋转到磁盘。间距(Y轴),滚动(X轴)偏航(Z轴)。我想要实现的是,无论这个盘的当前角度是什么,当我使用Pitch控制器调整角度时,我希望它不是在它的本地主体框架中旋转,而是在主要的'帧。控制器不随其旋转,并保持平稳在主体中。框架也是如此。

当我滚动磁盘90deg时,更多细节。我将Pitch应用于它,我不希望它在当地的身体框架中倾斜,但实际上YAW在其局部的身体框架中。

所以我实际上正在寻找的是一种旋转我的输入调整的方法。以某种方式,磁盘旋转就像我上面描述的那样。 我知道如何旋转矢量,但我仍然坚持如何处理滚动,俯仰,偏航方向旋转。

任何帮助将不胜感激!

汤姆

1 个答案:

答案 0 :(得分:0)

你连续三次轮换。组合旋转矩阵

E = R_Z(yaw)*R_X(pitch)*R_Y(roll)

其中R_X()R_Y()R_Z()以及元素3×3运动矩阵中的每一个。有关每个组件的组件,请参阅Basic Rotations (wikipedia)