四元数对象旋转

时间:2013-04-15 12:17:37

标签: java android opengl-es rotation

因为几天我试图为Android OpenGL ES实现四元数旋转。我想通过输入quaternion(x,y,z,w)获得函数。此函数将为GL10对象设置旋转。 GL10对象仅具有gl.glRotatef(y, 1.0f, 0.0f, 0.0f)功能,提供欧拉角中的设置位置。我尝试使用该类https://github.com/TraxNet/ShadingZen/blob/master/library/src/main/java/org/traxnet/shadingzen/math/Quaternion.java来创建Matrix,但它仍然不起作用。如果有人可以通过将参数quaternion(GL10setRotation(Quaternion q)).

作为参数显示/编写如何设置GL10对象的位置,我将不胜感激

1 个答案:

答案 0 :(得分:3)

glRotatef只是当前矩阵与旋转矩阵(以及相关的边界检查)的乘法。

在OpenGL 1中使用链接的Quaternion类的一种方法是:

Matrix rotation = new Matrix();
quaternion.toMatrix(rotation);
glMultMatrixf(rotation.getAsArray(), 0);

请注意glRotateglTranslateslower than doing the Matrix math yourself并使用glLoadMatrix。一般来说,如果性能很重要,我建议不要完全使用OpenGL。