Question

Je ne semble pas être capable de comprendre cela dans ma tête. J'essaie de déplacer un objet dans un espace 3D.

Si j'ai un point à 5,15,5 et que j'utilise 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 );

Existe-t-il un moyen de savoir où ce point se termine (en coordonnées mondiales / globales)? Puis-je effectuer une sorte de calcul matriciel qui me rend 20,26,23 (ou la valeur de chaque nouvelle position de coordonnées)?

S'il vous plaît, aidez-moi, ça fait longtemps que je suis coincé là-dessus!

Était-ce utile?

La solution

Essayez ce qui suit:

1) Poussez la matrice actuelle dans la pile; 2) chargez l'identité et appliquez vos transformations; 3) Obtenez la matrice de transformation résultante en une variable temporaire. glGet ou quelque chose comme ça va aider; 4) Pop la matrice de la pile;

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

Autres conseils

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

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

La méthode de SadSido vous procurera la matrice résultante, mais comprendre ce qui se passe dans les coulisses ne présente aucun inconvénient. Les calculs ci-dessus donneront une équation d’algèbre linéaire de la manière suivante:

pOut = [mTranslate] * [mRotate] * [mTranslate] * pIn

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top