我对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'是我的“角度”。
答案 0 :(得分:0)
如何计算rotx,roty,royz来做到这一点?
您的问题没有独特的解决方案。对于每个目标方向,有6种不同的方式来表示欧拉角。
无人值守地表示旋转的唯一方法是旋转矩阵或其近亲,四元数。
glRotate的参数非常接近四元数。实际上,轴参数是四元数的标准化i,j,k元素,实四元数部分是以弧度表示的旋转角度。