使用glm的四元数到矩阵

时间:2016-07-01 12:08:05

标签: c++ opengl glm-math

我正在尝试将glm中的quat转换为mat4。

我的代码是:

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

当我运行程序时,它显示错误&#34;错误:'quaternion'尚未声明&#34;。

任何人都可以帮我吗?

2 个答案:

答案 0 :(得分:9)

添加include:

#include <glm/gtx/quaternion.hpp>

修复toMat4

的命名空间
glm::mat4 RotationMatrix = glm::toMat4(myQuat);

glm::toMat4()存在于gtx/quaternion.hpp文件中,you can see只有glm命名空间。

另外作为附注,从C ++ 14开始,嵌套命名空间(例如glm :: quaternion :: toMat4)are not allowed

答案 1 :(得分:5)

除了meepzh的答案,它也可以这样做:

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

需要#include <glm/gtx/quaternion.hpp>