2

我正在尝试将一个坐标系中的一组点转换为我的 Android OpenGL 项目的另一个坐标系。

假设matrix是一个 16 个元素的浮点数组。Assumepoints是对一个包含 4 个元素的浮点数组的引用。( points = new float[8][4])

我将矩阵设置为单位矩阵,然后将其转换并乘以游戏对象的旋转。然后我尝试将 8 个顶点中的每一个转换为新的矩阵坐标系,但没有一个点发生变化。

Matrix.setIdentityM(matrix, 0);
Matrix.translateM(matrix, 0, go.getPosition().getX(), go.getPosition().getY(), go.getPosition().getZ());
Matrix.multiplyMM(matrix, 0, matrix, 0, go.getRotationArray(), 0);      
//Matrix.rotateM(matrix, 0, 30f, 1.5f, -5f, 0f); testing debug purpose

for(int i=0;i<8;i++)
{
    Matrix.multiplyMV(points[i], 0, matrix, 0, points[i], 0);
}

我基本上是在尝试做 Android 的 2D 画布和 Matrix 'mapPoints' 所做的事情。

4

1 回答 1

3

当你有一个向量时,你的 4 个长向量的最后一个元素必须是 1 而不是 0!所以没有翻译数据被正确地相乘。(嗯,它做得正确,只是不是我想要的。)所以当 android.opengl.Matrix 要求一个四长的向量并且前三个元素代表你的 x、y、z 时,请确保设置了第四个元素到 1!

于 2013-07-07T02:49:42.420 回答