【发布时间】:2012-12-28 16:09:18
【问题描述】:
我在 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”是我的“角度”。
【问题讨论】:
-
我想你忘记了这个问题 ;-) .. 你能提供更多关于你想要达到的目标的细节吗?
-
它听起来就像你想要一个旋转的quaternion representation - 但你并没有真正指定你的矢量/角度是如何确定的,或者如何使用它们.
-
您可以将轴和角度直接传递给glRotatef:
glrotatef(angle,a.x,a.y,a.z)。你真的需要把它分成三个旋转吗?
标签: opengl