Ich habe ein Programm, das ich mit einer rotierenden Kugel erstellt (glutWireSphere
) und ich möchte die Drehung in die genau entgegengesetzte Richtung ändern.Ändern Sie die Drehung einer 3D-Kugel in die genau entgegengesetzte Richtung mit GLUT
Zum Beispiel, wenn es langsam CW auf der Y-Achse dreht, möchte ich, dass es sich CCW dreht. Hier
ist der Code, ich habe bisher:
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();
}
zu tun, was ich gerade geschrieben habe änderte ich die Werte der X
Y
& Z
Argumente innerhalb der glRotatef
Funktion der display
Funktion -0.5,-1.,-0.5
und ich noch bekomme die exakt gleiche Rotation.
Ich habe auch versucht (mit den ursprünglichen glRotatef
Argumente) kommt die idle
Funktion zu ändern:
void idle() {
angle -= 0.2;
if (angle < 0.) angle += 360.;
glutPostRedisplay();
}
Und Rotation noch, gleich.
Fehle ich etwas in meinem Verständnis hier über die glRotatef
Funktion?
Ich denke, dass Ihr Code korrekt ist. Das Problem könnte nur ein optischer Effekt sein, da es schwierig ist, eine drahtgefräste Kugel zu sehen, wenn sie sich in CW oder CCW dreht. Ändern Sie das Modell für etwas ohne Symmetrie und Sie werden es sehen. –
'Winkel - = 0,2;' würde es tun. Das Spiegeln der Achse ist eine Option, aber nicht gleichzeitig mit negativen Winkeln. Verlangsamen Sie auch die Rotationsgeschwindigkeit, um sicherzustellen, dass Sie keinen Alias-Effekt haben. – ja72