GLM 矩阵乘法向量给出不正确的结果
GLM matrix multiply vector gives incorrect results
glm::fmat4 m(0.001716f, 0.00001f, 0.0f, -0.545988f,
0.0f, 0.001725f, 0.0f, -0.408158f,
0.0f, 0.0f, 0.0f, -1.0f,
0.0f, 0.0f, -0.000029f, 0.031473f);
glm::fvec4 v(320.5f, 240.5f, 781.762634f, 1.0f);
glm::fvec4 result = m * v;
printf("result = (%f, %f, %f, %f)\n", result.x, result.y, result.z, result.w);
上面的代码给出:
result = (0.549978, 0.418067, -0.000029, -1054.882324)
WolframAlpha所做的相同计算:
(0.006395
0.0067045
-1
0.00880188)
为什么?我理解错了吗?如果相关,我使用的是 Visual Studio 2015,64 位内置目标。
您正在计算一个 A*b
和另一个 Transpose[A]*b
。
glm::fmat4 m(0.001716f, 0.00001f, 0.0f, -0.545988f,
0.0f, 0.001725f, 0.0f, -0.408158f,
0.0f, 0.0f, 0.0f, -1.0f,
0.0f, 0.0f, -0.000029f, 0.031473f);
glm::fvec4 v(320.5f, 240.5f, 781.762634f, 1.0f);
glm::fvec4 result = m * v;
printf("result = (%f, %f, %f, %f)\n", result.x, result.y, result.z, result.w);
上面的代码给出:
result = (0.549978, 0.418067, -0.000029, -1054.882324)
WolframAlpha所做的相同计算:
(0.006395
0.0067045
-1
0.00880188)
为什么?我理解错了吗?如果相关,我使用的是 Visual Studio 2015,64 位内置目标。
您正在计算一个 A*b
和另一个 Transpose[A]*b
。