GLM 数学库

GLM 数学库

 

 

GLM 数学库​glm.g-truc.net

 

单位矩阵

单位矩阵是一个除了对角线以外都是0的N×N矩阵。

4 x 4单位矩阵

行矩阵

r11 r12 r13 0
r21 r22 r23 0
r31 r32 r33 0
tx  ty  tz  1

列矩阵

r11 r21 r31 tx
r12 r22 r32 ty
r13 r23 r33 tz
0   0   0   1

glm::mat4 四阶矩阵

//创建单位矩阵
glm::mat4 trans = glm::mat4(1.0f);
trans = glm::translate(trans, glm::vec3(1.0, 1.0, 1.0));//设置平移矩阵

glm::mat4_cast

把四元数转换成旋转矩阵

glm::mat4 model = glm::mat4(1.0f); //创建一个单位矩阵
glm::qua<float> q = glm::qua<float>(glm::radians(glm::vec3(0.0f, 0.0f, 90.0f))); //创建一个绕z轴旋转90度的四元数
model = glm::mat4_cast(q) * model;	//得到一个旋转的模型矩阵

glm::decompose

矩阵分解

#include <glm/gtx/matrix_decompose.hpp>

glm::mat4 transformation; // your transformation matrix.
glm::vec3 scale;
glm::quat rotation;
glm::vec3 translation;
glm::vec3 skew;
glm::vec4 perspective;
glm::decompose(transformation, scale, rotation, translation, skew,perspective);

四元数确实是不正确的,可以通过以下方法解决:

rotation = glm::conjugate(rotation);

 

编辑于 2019-12-16
posted @ 2021-02-18 22:56  py2020  阅读(942)  评论(0)    收藏  举报