Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android opengl.Matrix类问题_Android_Opengl Es_Matrix_Opengl Es 2.0 - Fatal编程技术网

Android opengl.Matrix类问题

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| |

典型的旋转公式有(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.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元素值未定义。”