0

我有通过欧拉角和位置保持她的方向的相机类。像这样的东西:

float m_x;
float m_y;
float m_z;

Vector4 m_pos;

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

所以算法看起来像这样:

  1. 查找相机本地系统轴(u,v,n)
  2. 在角度 alpha 上绕 u 轴旋转
  3. 找到 (1, 0, 0), (0, 1, 0), (0, 0, 1) 周围的角度,这些角度响应围绕 u 轴的角度 alpha 的旋转
  4. 将它们添加到 m_x、m_y、m_z

问题是:如何计算默认坐标系中的旋转角度(我的意思是在 (1, 0, 0)、(0, 1, 0) 和 (0, 1, 0) 和 (0, 0, 1) 中)回答本地相机坐标中的旋转角度系统?

描述

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

4

1 回答 1

1

我正在回答您评论中的简洁问题:

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

您可以通过应用合适的变换矩阵来变换坐标系之间的旋转。这又可以从欧拉角中计算出来,参见维基百科的转换公式部分

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

于 2013-01-15T13:44:43.753 回答