小编yea*_*xon的帖子

opengl矩阵旋转四元数

我试图围绕x轴和y轴进行简单的旋转:

我想总是在x轴上旋转一个数量x的立方体,并在y轴上旋转立方体y,与x轴旋转无关

首先,我天真地做了:

glRotatef(x,1,0,0);
glRotatef(y,0,1,0);
Run Code Online (Sandbox Code Playgroud)

然后

但是首先在x上旋转然后旋转yi想要独立于x访问而在y上旋转.

我开始研究四元数,所以我尝试了:

Quaternion Rotation1;
Rotation1.createFromAxisAngle(0,1, 0, globalRotateY);
Rotation1.normalize();

Quaternion Rotation2;
Rotation2.createFromAxisAngle(1,0, 0, globalRotateX);
Rotation2.normalize();

GLfloat Matrix[16];

Quaternion q=Rotation2 * Rotation1;

q.createMatrix(Matrix);
glMultMatrixf(Matrix);
Run Code Online (Sandbox Code Playgroud)

这几乎完全是做完2连续glRotates所做的...所以我想我错过了一步或2.

是四元数的方式或我应该使用不同的东西?如果四元数是我可以添加的步骤,以使立方体独立于每个轴旋转.我认为其他人也有同样的问题: 在2轴上旋转OpenGL场景

opengl rotation matrix quaternions

7
推荐指数
1
解决办法
8017
查看次数

标签 统计

matrix ×1

opengl ×1

quaternions ×1

rotation ×1