2011-06-21 4 views
1

J'ai un plan et je veux le faire tourner autour de l'axe y. Les coordonnées des avions sont:Rotation dans opengl

Vec4f(-1,-1, -5, 1), 
Vec4f(1,-1, -5, 1), 
Vec4f(1, 1, -5, 1), 
Vec4f(-1, 1, -5, 1), 

Je veux juste le plan de rotation, ne pas tourner en rond, donc je retraduire à l'origine une puis faire la rotation:

glTranslatef(0,0,-5); 
glRotatef(50.0*t, 0, 1, 0); 

draw(plane); 

Mais le plan fait toujours un cercle autour de l'origine. Qu'est-ce que je fais mal?

Répondre

3

Les transformations s'appliquent dans l'ordre inverse dans lequel vous les multipliez, vous pouvez aussi vouloir les traduire à leur origine. Donc changer comme ça:

translation = -5; 
if(translate_back) glTranslatef(0,0,-translation); 
glRotatef(50.0*t, 0, 1, 0); 
glTranslatef(0,0,+translation); 
+0

Merci, cela fonctionne, mais une question, quand je déplace le plan de retour à l'origine je glTranslate (0,0,5) non glTranslate (0,0, -5) , le code devient: glTranslatef (0,0, -5); glRotatef (50,0 * t, 0, 1, 0); glTranslatef (0,0,5); – Merni

+0

Juste translate_back = true dans le code ci-dessus, alors vous avez votre réponse :) – datenwolf

+0

mais votre réponse est fausse, ce devrait être le contraire – Merni