Android opengl.Matrix类问题
典型的旋转公式有(wiki) 以绕X轴旋转45度为例。cos45=sin45=0.707 所以结果矩阵应该是 [1000] |00.707-0.7070| |00.7070.7070| [0001] 所以我使用android.opengl.Matrix 矩阵setIdentityM(mModelMatrix,0) 旋转矩阵(mModelMatrix,0,mModelMatrix,0,45,1.0f,0.0f,0.0f) 然后我观察结果,结果是: [1000] |00.707-0.4990| |00.7070.2070| [0001]Android opengl.Matrix类问题,android,opengl-es,matrix,opengl-es-2.0,Android,Opengl Es,Matrix,Opengl Es 2.0,典型的旋转公式有(wiki) 以绕X轴旋转45度为例。cos45=sin45=0.707 所以结果矩阵应该是 [1000] |00.707-0.7070| |00.7070.7070| [0001] 所以我使用android.opengl.Matrix 矩阵setIdentityM(mModelMatrix,0) 旋转矩阵(mModelMatrix,0,mModelMatrix,0,45,1.0f,0.0f,0.0f) 然后我观察结果,结果是: [1000] |00.707-0.4990| |
请解释一下这是什么?虫子?特写?或者我可能错过了一些数学和它的等价物?android.opengl.Matrix.rotateM有两个不同的版本:
public static void rotateM (float[] m, int mOffset, float a, float x, float y, float z)
// Rotates matrix m in place by angle a (in degrees) around the axis (x, y, z)
public static void rotateM (float[] rm, int rmOffset, float[] m, int mOffset, float a, float x, float y, float z)
// Rotates matrix m by angle a (in degrees) around the axis (x, y, z)
看起来您希望在适当的位置旋转它——源矩阵和结果矩阵是相同的float[]——但是您使用的调用从一个矩阵读取,然后写入另一个矩阵。查看
rotateM
的实现,这似乎不受支持。是的,这确实不受支持:内部执行multriplyMM:“可以为result、lhs和/或rhs传递相同的浮点数组。但是,如果result元素与lhs或rhs元素重叠,则result元素值未定义。”