1

我在 OpenGL 程序中遇到对象的方向问题,我无法根据 3D 矢量和角度或 4D 矢量计算 x、y、z 的旋转。我正在使用 c++。

我有:

Vector3f myVector;
float angle;    
float rotx;
float roty;    
float rotz;

//i need smomething like

doSomething(a,angle,&rotx,&roty,&rotz);    
glRotatef(rotx,1.0,0,0);    
glRotatef(roty,0,1.0,0);    
glRotatef(rotz,0,0,1.0);

// draw object

“myVector”是 3d 空间中的向量。我想在矢量方向旋转对象。“角度”是对象围绕向量的旋转。“rotx,roty,rotz”是局部变量。如何计算 rotx,roty,royz 来做到这一点?

http://en.wikipedia.org/wiki/File:Euler_AxisAngle.png

在链接上的图片中,我的对象朝向“x”的方向,我想将它朝向“e”的方向,“O”是我的“角度”。

4

1 回答 1

0

如何计算 rotx,roty,royz 来做到这一点?

您的问题没有唯一的解决方案。对于每个目标方向,有 6 种不同的方式以欧拉角表示。

明确表示旋转的唯一方法是旋转矩阵,或者它们的近亲,四元数。

glRotate 的参数非常接近四元数。实际上,轴参数是四元数的归一化 i,j,k 元素,而实际四元数部分是以弧度为单位的旋转角。

于 2012-12-28T17:45:06.927 回答