我有一个用旋转球体(glutWireSphere
)创建的程序,我喜欢将旋转更改为完全相反的方向。
例如,如果它在Y轴上缓慢旋转CW,我希望它旋转CCW。
这是我到目前为止的代码:
float angle = 0.;
void display() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glPushMatrix();
glTranslatef(0., -1.5, 0.);
glRotatef(angle, 0.5, 1., 0.5);
glColor3d(0, 0, 1);
glutWireSphere(2, 25, 15);
glPopMatrix();
glutSwapBuffers();
glFlush();
}
void idle() {
angle += 0.2;
if (angle > 360.) angle -= 360.;
glutPostRedisplay();
}
void myinit() {
glClearColor(1.0, 1.0, 1.0, 1.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-6., 6., -6., 6., -6., 6.);
glMatrixMode(GL_MODELVIEW);
}
void main(int argc, char** argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH | GLUT_RGB);
glutInitWindowSize(400, 400);
glutInitWindowPosition(10, 10);
glutCreateWindow("3d objects");
glutDisplayFunc(display);
glutIdleFunc(idle);
glEnable(GL_DEPTH_TEST);
myinit();
glutMainLoop();
}
要做我刚刚写的内容,我更改了X
Y
&的值Z
函数的glRotatef
函数内的display
个参数-0.5,-1.,-0.5
,我仍然得到完全相同的旋转。
我还尝试将idle
函数更改为此(使用原始glRotatef
参数):
void idle() {
angle -= 0.2;
if (angle < 0.) angle += 360.;
glutPostRedisplay();
}
然而,同样的轮换。
我在这里对glRotatef
函数的理解缺少了什么?