2016-04-07 4 views
0

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 XY & 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?

+1

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. –

+0

'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

Antwort

0

Als JordiC kommentierte, da es eine perfekte Kugel war, war es schwer, die wahre Rotation der Form zu sehen.

Ich habe einen Kegel innerhalb der Kugel hinzugefügt und jetzt kann ich deutlich sehen, dass die Drehung entgegengesetzt ist.

Verwandte Themen