2016-07-01 11 views
6

Próbuję przekonwertować quat w glm na mat4.Ułomnienie do macierzy za pomocą glm

Mój kod to:

#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; 
} 

Kiedy uruchamiam program pokazuje błąd „błąd:«quaternion»nie został zadeklarowany”.

Czy ktoś może mi w tym pomóc?

+1

Czy 'quaternion :: toMat4' muszą być' GLM :: quaternion :: toMat4'? – NathanOliver

Odpowiedz

8

Dodaj include:

#include <glm/gtx/quaternion.hpp> 

i naprawić przestrzeń nazw toMat4:

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

glm::toMat4() istnieje w pliku gtx/quaternion.hpp, który you can see ma tylko nazw glm.


również jako marginesie, jak C++ 14, zagnieżdżone przestrzenie (np GLM Kwaterniony :: :: toMat4) are not allowed.

0

Oprócz odpowiedzi meepzh użytkownika, może też być zrobione tak:

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

który nie wymaga #include <glm/gtx/quaternion.hpp>

Powiązane problemy