2016-07-01 26 views
6

Sto provando a convertire quat in glm a mat4.Quaternion to Matrix using glm

Il mio codice è:

#include <iostream> 
#include<glm/glm.hpp> 
#include<glm/gtc/quaternion.hpp> 
#include<glm/common.hpp> 
using namespace std; 


int main() 
{ 
    glm::mat4 MyMatrix=glm::mat4(); 
    glm::quat myQuat; 

    myQuat=glm::quat(0.707107,0.707107,0.00,0.000); 
    glm::mat4 RotationMatrix = quaternion::toMat4(myQuat); 

    for(int i=0;i<4;++i) 
    { 
     for(int j=0;j<4;++j) 
     { 
      cout<<RotationMatrix[i][j]<<" "; 
     } 
     cout<<"\n"; 
    } 
    return 0; 
} 

quando ho eseguito il programma mostra l'errore "l'errore:‘quaternione’non è stato dichiarato".

Qualcuno può aiutarmi con questo?

+1

Does 'quaternione :: toMat4' bisogno di essere' glm :: quaternione :: toMat4'? – NathanOliver

risposta

8

Aggiungere l'include:

#include <glm/gtx/quaternion.hpp> 

e fissare lo spazio dei nomi di toMat4:

glm::mat4 RotationMatrix = glm::toMat4(myQuat); 

glm::toMat4() esiste nel file gtx/quaternion.hpp, che you can see ha solo lo spazio dei nomi glm.


altresì nota laterale, come di C++ 14, namespace annidati (ad esempio glm :: quaternioni :: toMat4) are not allowed.

0

Oltre alla risposta di meepzh, può anche essere fatto in questo modo:

glm::mat4 RotationMatrix = glm::mat4_cast(myQuat); 

che non significa richiede #include <glm/gtx/quaternion.hpp>