Domanda

Non riesco proprio a capirlo nella mia testa. Sto cercando di spostare un oggetto nello spazio 3D.

Se ho un punto a 5,15,5 e utilizzo le funzioni opengl per cambiare la vista del modello ....

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

C'è un modo in cui posso scoprire dove finisce quel punto (in coordinate globali / globali)? Posso fare una sorta di calcoli con matrici che mi restituiranno 20,26,23 (o quale sia ogni nuova posizione delle coordinate)?

Per favore aiutatemi, sono rimasto bloccato per così tanto tempo!

È stato utile?

Soluzione

Prova quanto segue:

1) Inserire la matrice corrente nello stack; 2) Carica identità e applica le tue trasformazioni; 3) Ottieni la matrice di trasformazione risultante in qualche variabile temp. glGet o qualcosa del genere aiuterà; 4) Pop la matrice dalla pila;

Ora hai la tua matrice di trasformazione. Moltiplica il tuo punto per questa matrice per prevedere le coordinate del punto dopo la trasformazione.

Altri suggerimenti

Sicuramente: controlla http: //research.cs.queensu .it / ~ jstewart / 454 / note / conduttura /

In breve, tutte queste chiamate si riducono a una singola matrice, che viene moltiplicata sul punto.

Il metodo SadSido ti darà sicuramente la matrice risultante, ma potrebbe non far male capire davvero cosa sta succedendo dietro le quinte. I calcoli sopra mostreranno un'equazione di algebra lineare di quanto segue:

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

dove mTranslate = le chiamate di traduzione (matrice per la traduzione) e mRotate = ruota la chiamata (matrice per la rotazione attorno ad un asse arbitrario). Calcolalo e sei a posto!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top