2011-07-09 77 views
2

我试图做一个Matrix.rotateM();我注意到如果矩阵本身旁边的所有参数都是0.0f,那么矩阵将会与一些NaN值混淆。Android Matrix.rotateM结果在NaN

mModelMatrix = new float[16]; 
Matrix.setIdentityM(mModelMatrix, 0); 
Matrix.rotateM(mModelMatrix, 0, 0.0f, 0.0f, 0.0f, 0.0f); 

这样的矩阵结果。

[NaN, NaN, NaN, 0.0] 
[NaN, NaN, NaN, 0.0] 
[NaN, NaN, NaN, 0.0] 
[NaN, NaN, NaN, 1.0] 

旋转之前的矩阵看起来像这样

[1.0, 0.0, 0.0, 0.0] 
[0.0, 1.0, 0.0, 0.0] 
[0.0, 0.0, 1.0, 0.0] 
[0.0, 0.0, 0.0, 1.0] 

但如果我到Matrix.rotateM()调用包含不是值0.0F则矩阵看起来很好。这是一种预期的行为?或者我做错了什么?

回答

3

如在该文档中指出:在适当位置

旋转矩阵M通过角度α (度)绕轴线(X,Y,Z)

轴你正在试图左右旋转为空。没有办法围绕空轴旋转,它只是不知道如何旋转,并失败。我通常对x,y或z使用1.0f,对其他2使用0.0f。这会给出围绕给定轴的旋转。