GLM 数学库
GLM 数学库
https://zhuanlan.zhihu.com/p/94975359
IT
GLM 数学库
单位矩阵
单位矩阵是一个除了对角线以外都是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

浙公网安备 33010602011771号