2009-10-22 18 views
0

Je ne semble pas être capable de comprendre cela dans ma tête. J'essaie de déplacer un objet dans l'espace 3D.C++ Transformation de coordonnées OpenGL

Si j'ai un point à 5,15,5 et utiliser les fonctions opengl pour changer la vue du modèle ....

glTranslatef(10.0f, 4.0f, 4.0f); 
glRotatef(33.0f, 1.0f, 0.0f, 0.0f); 
glTranslatef(10.0f, 4.0f, 4.0f); 

Est-il possible que je peux savoir où ce point se termine (en coordonnées mondiales/mondiales)? Puis-je faire une sorte de calcul matriciel qui me rendra 20,26,23 (ou quelle est la nouvelle position de coordonnées)?

S'il vous plaît, aidez-moi, ça fait si longtemps que je suis bloqué!

Répondre

4

les opérations suivantes:

1) Appuyer sur la matrice courante dans la pile; 2) Charger l'identité et appliquer vos transformations; 3) Obtenez la matrice de transformation résultante dans une variable temp. glGet ou quelque chose comme ça aidera; 4) Pop la matrice de la pile;

Maintenant vous avez votre matrice de transformation. Multipliez votre point par cette matrice pour prédire les coordonnées du point après la transformation.

+0

Je pense que je l'ai maintenant :) quelque chose dans ce sens ... http://www.gamedev.net/reference/articles/article877.asp – michael

0

Certainement: consultez http://research.cs.queensu.ca/~jstewart/454/notes/pipeline/

En bref, tous ces appels réduisent à une seule matrice, qui est multipliée sur le point.

La méthode de SadSido va certainement vous obtenir la matrice résultante, mais il ne peut pas blesser de comprendre réellement ce qui se passe dans les coulisses. Les calculs ci-dessus se traduira par une équation d'algèbre linéaire des éléments suivants:

Pout = [mTranslate] * [mRotate] * [mTranslate] * pF

où mTranslate = les appels de la traduction (matrice pour la traduction), et mRotate = rotation de l'appel (matrice pour la rotation autour d'un axe arbitraire). Calculez cela, et vous êtes prêt à partir!

+0

Merci pour votre réponse, quand je suis un peu plus à l'aise avec tout cela, je pense que je vais plonger plus profondément dans les mathématiques de la matrice – michael

Questions connexes