欧拉相机,在相机本地系统中围绕x轴旋转

时间:2013-01-15 08:25:12

标签: c++ math game-engine transformation

我有相机课程,通过欧拉角度和位置保持她的方向。这样的事情:

float m_x;
float m_y;
float m_z;

Vector4 m_pos;

我想把这个相机放在空间上。 当用户上下移动鼠标时,摄像机必须在自己的坐标系中绕x轴旋转。但我想只保留这三个角度和位置,仅此而已。

所以算法看起来像这样:

  1. 查找相机本地系统轴(u,v,n)
  2. 绕角度α
  3. 绕u轴旋转
  4. 查找围绕(0,0,0),(0,1,0),(0,0,1)的角度,以回答围绕u轴的角度α的旋转
  5. 将它们添加到m_x,m_y,m_z
  6. 问题是:如何在默认坐标系中计算旋转角度(我的意思是在(1,0,0),(0,1,0)和(0,0,1)),它们可以回答旋转角度本地摄像机坐标系?

    Description

    或者对于这个问题可能有更好的解决方案吗?

1 个答案:

答案 0 :(得分:1)

我正在回答your comment中简明扼要的问题:

  

如何计算一个坐标系中的旋转,以响应另一个坐标系中的旋转?

您可以通过应用合适的变换矩阵来变换坐标系之间的旋转。这又可以从欧拉角度计算出来,参见Wikipedia section on conversion formulae

根据您的应用程序,您可能也可能不需要考虑翻译。据我了解你的问题,你可以专注于每次转型的轮换部分。