2016-05-23 12 views
1
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); 

を与える上記のコードは与えられる:GLM行列乗算ベクトルが間違った結果を

result = (0.549978, 0.418067, -0.000029, -1054.882324) 

WolframAlphaによって行わ同じ計算:

(0.006395 
0.0067045 
-1 
0.00880188) 

なぜ?何か間違ったことを理解していますか関連性がある場合は、Visual Studio 2015、64ビットビルドターゲットを使用しています。

答えて

1

A*bは1で、Transpose[A]*bは別の数値で計算しています。

+1

mの代わりにglm :: transpose(m)を使用すると、期待される結果が得られます。ありがとうございました。 – MacMillan