glm::vec4 x = glm::vec4(0.0f, 0.0f, 1.0f, 0.0f);
glm::vec4 y = glm::vec4(0.0f, 1.0f, 0.0f, 0.0f);
glm::vec4 z = glm::vec4(-1.0f, 0.0f, 0.0f, 0.0f);
glm::vec4 t(0.0f, 0.0f, 0.0f, 1.0f);
glm::mat4 rot(x, y, z, t);
glm::vec4 test = rot * glm::vec4(10.0f, 0.0f, 0.0f, 1.0f);
"测试" varible应为(0.0f,0.0f,-10.0f,1.0f),但返回的结果为(0.0f,0.0f,10.0f,1.0f)。这是glm的错误吗?
答案 0 :(得分:1)
我想您假设四个向量x
,y
,z
和t
是“行向量”,但看起来它们是“列”载体”。因此,矩阵rot
最有可能:
x y z t
__________
0 0 -1 0
0 1 0 0
1 0 0 0
0 0 0 1
当与列向量相乘时:
10
0
0
1
提供列向量:
0
0
10
1
编辑:修正倒置术语
答案 1 :(得分:0)
实际结果不是(0, 0, 10, 2)
吗?基本上,矩阵乘以向量意味着矩阵列与来自向量的系数的线性组合。所以,在你的例子中
rot * glm::vec4(10.0f, 0.0f, 0.0f, 1.0f)
相当于
10.0f * x + 0.0f * y + 0.0f * z + 1.0f * t