我正在尝试使用以下代码在给定轴上连续旋转球体:
gl.glRotatef(axisX, 0, 1, 0);
gl.glRotatef(axisY, 0, 0, 1);
axisX = (axisX+1)%360;
axisY = (axisY+1)%360;
变量axisX
和axisY
现在都加一,这将使旋转沿对角线方向向右旋转。物体旋转约 45 度,然后开始转动并开始向相反方向旋转。如何让它在 x 和 y 轴之外的轴上连续旋转?
注意:我正在尝试连接一个虚拟操纵杆来控制 axisX
和 axisY
值,并使球体在操纵杆代表的轴上旋转。如果有人对此有任何建议,那就太好了。
编辑:
我已经更改了它,以便如果我使用 gl.glRotatef(angle, axisX, axisY, axisZ);
它可以工作并保持旋转,但旋转不平滑,看起来像当我切换旋转轴时,旋转会重新开始。
最佳答案
glLoadIdentity(); // Reset rotation and give a new one
glRotatef(theta[0],1.0,0.0,0.0);
glRotatef(theta[1],0.0,1.0,0.0);
第一个参数是角度,然后是要围绕其旋转的轴。
关于您的编辑:看起来您正在此处混合轴和角度。轴应该是单位长度 vector ,角度从 0 到 2*PI。
另一种方法是使用四元数,然后将四元数转换为矩阵并将该矩阵加载为当前的模型 View 矩阵。
希望有帮助。
关于java - OpenGL ES 中的旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13924267/