Android Matrix.rotateM会生成NaN

时间:2011-07-09 14:11:51

标签: android matrix-multiplication

我试图做一个Matrix.rotateM();并且我注意到如果矩阵本身旁边的所有参数都是0.0f那么矩阵将会被一些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]

旋转之前,Matrix看起来像这样

[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那么矩阵看起来很好。这是预期的行为吗?或者我做错了什么?

1 个答案:

答案 0 :(得分:3)

正如文件中所述:

  

将矩阵m按角度a旋转到位   (以度为单位)围绕轴(x,y,z)

您尝试旋转的轴为空。没有办法绕零轴旋转,它只是不知道如何旋转,并失败。我通常对x,y或z使用1.0f,对另一个使用0.0f。这使你可以绕给定轴旋转。