使用3D矢量和角度在OpenGL中旋转对象

时间:2012-12-28 16:09:18

标签: opengl

我对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'是我的“角度”。

1 个答案:

答案 0 :(得分:0)

  

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

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

无人值守地表示旋转的唯一方法是旋转矩阵或其近亲,四元数。

glRotate的参数非常接近四元数。实际上,轴参数是四元数的标准化i,j,k元素,实四元数部分是以弧度表示的旋转角度。