我有通过欧拉角和位置保持她的方向的相机类。像这样的东西:
float m_x;
float m_y;
float m_z;
Vector4 m_pos;
我想在空间上自由移动这个相机。当用户上下移动鼠标时,相机必须在她自己的坐标系中围绕 x 轴旋转。但我只想保持这三个角度和位置,仅此而已。
所以算法看起来像这样:
- 查找相机本地系统轴(u,v,n)
- 在角度 alpha 上绕 u 轴旋转
- 找到 (1, 0, 0), (0, 1, 0), (0, 0, 1) 周围的角度,这些角度响应围绕 u 轴的角度 alpha 的旋转
- 将它们添加到 m_x、m_y、m_z
问题是:如何计算默认坐标系中的旋转角度(我的意思是在 (1, 0, 0)、(0, 1, 0) 和 (0, 1, 0) 和 (0, 0, 1) 中)回答本地相机坐标中的旋转角度系统?
或者对于这个问题可能存在更好的解决方案?