在android.opengl.Matrix类中有两种旋转矩阵的方法,它们是:
static void rotateM (float[] m, int mOffset, float a, float x, float y, float z)
围绕轴(x,y,z)以角度a(以度为单位)旋转矩阵m
static void setRotateM(float[] rm, int rmOffset, float a, float x, float y, float z)
围绕轴(x,y,z)以角度a(以度为单位)旋转矩阵m
Here is the original ducumentation
这些方法有点不同,但我不明白确切的区别。你能解释一下吗?
答案 0 :(得分:5)
假设矩阵R是围绕(x,y,z)轴旋转矩阵的角度a,则rotateM方法修改现有矩阵m,如下所示:m = R * m
,但setRotateM会覆盖它:m = R
。
答案 1 :(得分:5)
以上答案是正确的。不过,我有一个小小的通知。
请注意Matrix.rotateM()
分配16个字节,因此在绘制每个帧时不要调用它。如果需要,最好使用预先分配的临时矩阵实现自己的旋转方法。更多信息:
https://groups.google.com/forum/?fromgroups#!topic/android-developers/sw3SpDfPsHY[1-25]