我试图做一个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那么矩阵看起来很好。这是预期的行为吗?或者我做错了什么?
答案 0 :(得分:3)
正如文件中所述:
将矩阵m按角度a旋转到位 (以度为单位)围绕轴(x,y,z)
您尝试旋转的轴为空。没有办法绕零轴旋转,它只是不知道如何旋转,并失败。我通常对x,y或z使用1.0f,对另一个使用0.0f。这使你可以绕给定轴旋转。