在OpenGL中有时会需要求一个3维空间中的点在平移(缩放,旋转)后坐标是多少.需求相当于二维的mapPoints.可以通过这个函数实现
void multiplyMV (float[] resultVec,
int resultVecOffset,
float[] lhsMat,
int lhsMatOffset,
float[] rhsVec,
int rhsVecOffset)
resultVec表示存放结果的数组,resultVecOffset表示结果的第一个元素在数组中的位置,lhsMat表示变换矩阵的数组,lhsMatOffset表示变换矩阵第一个元素在数组中的位置,rhsVec表示存放变换前点的坐标的数组,rhsVecOffset变换前点的坐标第一个元素在数组中的位置.
用法如下:
float[] origin = new float[] {1, 2, 3, 1};
float degree = 30;
float[] matrix = new float[16];
Matrix.setIdentityM(matrix, 0);
Matrix.translateM(matrix, 0, 0, 1, 0);
float[] result = new float[4];
Matrix.multiplyMV(result, 0, matrix, 0, origin, 0);
上面求得了把点(1,2,3)沿y轴平稳1个单位后的坐标,结果保存在result中.