深色模式
android.opengl.Matrix
opengl 包中 Matrix 类常用方法
multiplyMM()
: 计算两个矩阵乘法将两个4x4矩阵相乘,并将结果存储在第三个4x4矩阵中。以矩阵表示法表示:result = lhs x rhs。
javapublic static native void multiplyMM(float[] result, int resultOffset, float[] lhs, int lhsOffset, float[] rhs, int rhsOffset);
multiplyMV()
:利用一个变换矩阵和向量相乘得到新的向量将一个4*4矩阵和一个四元素向量相乘获取一个新的四元素向量。
javapublic static native void multiplyMV(float[] resultVec, int resultVecOffset, float[] lhsMat, int lhsMatOffset, float[] rhsVec, int rhsVecOffset);
transposeM()
:获取转置矩阵javapublic static void transposeM(float[] mTrans, int mTransOffset, float[] m, int mOffset)
invertM()
:获取逆矩阵javapublic static boolean invertM(float[] mInv, int mInvOffset, float[] m, int mOffset)
orthoM()
:计算正交投影矩阵javapublic static void orthoM(float[] m, int mOffset, float left, float right, float bottom, float top, float near, float far)
frustumM()
:计算透视投影矩阵以六个裁剪平面定义投影矩阵。
近平面的尺寸确定,near的值越小,看到的物体越小,(因为看到的内容更多?)
javapublic static void frustumM(float[] m, int offset, float left, float right, float bottom, float top,//这4个参数是近平面边长 float near, float far)//注意,视点应该位于near和far之间,不然看不到物体
perspectiveM()
:计算透视投影矩阵根据视场角度、纵横比和Z裁剪平面定义投影矩阵。
近平面的宽高比例确定,视锥角度确定,改变near不能影响看到物体的大小,只能影响观察空间的范围。
javapublic static void perspectiveM(float[] m, int offset, float fovy, float aspect, float zNear, float zFar)
length()
:计算向量长度javapublic static float length(float x, float y, float z)
setIdentityM()
:定义单位矩阵javapublic static void setIdentityM(float[] sm, int smOffset)
scaleM()
:缩放矩阵按x、y和z缩放矩阵m,将结果放入sm。
javapublic static void scaleM(float[] sm, int smOffset, float[] m, int mOffset, float x, float y, float z)
scaleM()
:缩放矩阵将m矩阵自身按照x,y,z进行缩放。
javapublic static void scaleM(float[] m, int mOffset, float x, float y, float z)
translateM()
:平移矩阵将m矩阵按照x,y,z平移得到tm矩阵
javapublic static void translateM(float[] tm, int tmOffset, float[] m, int mOffset, float x, float y, float z)
translateM()
:平移矩阵将m矩阵自身按照x,y,z进行平移。
javapublic static void translateM(float[] m, int mOffset, float x, float y, float z)
rotateM()
:旋转矩阵将矩阵m经过a,x,y,z参数处理形成一个新的rm矩阵。
javapublic static void rotateM(float[] rm, int rmOffset, float[] m, int mOffset, float a, float x, float y, float z)
rotateM()
:旋转矩阵矩阵m自身根据a,x,y,z参数处理变成新的矩阵。
javapublic static void rotateM(float[] m, int mOffset, float a, float x, float y, float z)
setRotateM()
:创建旋转矩阵创造一个新的矩阵rm,根据a,x,y,z参数。
javapublic static void setRotateM(float[] rm, int rmOffset, float a, float x, float y, float z)
setRotateEulerM()
:创建旋转矩阵根据欧拉角度x,y,z创建旋转矩阵rm。
javapublic static void setRotateEulerM(float[] rm, int rmOffset, float x, float y, float z)
setLookAtM()
:创建视图矩阵javapublic static void setLookAtM(float[] rm, int rmOffset, float eyeX, float eyeY, float eyeZ, float centerX, float centerY, float centerZ, float upX, float upY, float upZ)