几天以来,我一直在尝试为 android OpenGL ES 实现四元数旋转。我想通过 input 获得功能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 但它仍然不起作用。如果有人可以通过作为参数显示/编写如何设置 GL10 对象的位置,我将不胜感激quaternion(GL10setRotation(Quaternion q)).
问问题
1206 次
1 回答
3
glRotatef
只是当前矩阵与旋转矩阵的乘积(加上相关的边界检查)。
在 OpenGL 1 中执行此操作的一种方法(使用链接的四元数类)是:
Matrix rotation = new Matrix();
quaternion.toMatrix(rotation);
glMultMatrixf(rotation.getAsArray(), 0);
请注意,glRotate
并且glTranslate
比自己做矩阵数学和使用glLoadMatrix
. 一般来说,如果性能很重要,我建议不要完全使用 OpenGL 1。
于 2013-04-15T13:10:42.070 回答