矩阵的计算
基本运算
1)相等(A=B):如果两个矩阵维数相同且对应元素也相同
2)矩阵与标量相乘:kD
3)加减法必须维数相同
4)AB≠BA
单位矩阵:(Identity Matrix)
主对角线上的元素为1其余为0,而且是方阵!乘其它数不变
逆矩阵:(inverse matrix)
1)只有方阵才可能有逆矩阵
2)MM-1=M-1M =I
3)(AB)-1 = A-1B-1
矩阵的转置:
m*n =n*m维
注意
3D中我们用4*4矩阵来描述,最后一列的值是用来判断是否可以进行矩阵变化的值.
1.单位矩阵
计算pOut的单位矩阵
D3DXMatrixIdentity
D3DXMATRIX * D3DXMatrixIdentity(
D3DXMATRIX * pOut
);
2.转置
把pM转置成pOut
D3DXMatrixTranspose
D3DXMATRIX * D3DXMatrixTranspose(
D3DXMATRIX *pOut,
CONST D3DXMATRIX *pM
);
3.求逆
计算PM的逆矩阵pOut, pDeterminant为0
D3DXMatrixInverse
D3DXMATRIX * D3DXMatrixInverse(
D3DXMATRIX *pOut,
FLOAT *pDeterminant,
CONST D3DXMATRIX *pM
);
4.创建平移矩阵
产生一个平移矩阵pOut,把其结果与要平移的矩阵进行叉乘
D3DXMatrixTranslation
D3DXMATRIX* D3DXMatrixTranslation(
D3DXMATRIX *pOut,
FLOAT x,
FLOAT y,
FLOAT z
);
5.创建旋转矩阵
产生一个旋转矩阵pOut,把其结果与要旋转的矩阵进行叉乘
D3DXMatrixRotationX
Builds a matrix that rotates around the x-axis.
D3DXMATRIX * D3DXMatrixRotationX(
D3DXMATRIX *pOut,
FLOAT Angle
);
6.创建放大&缩放矩阵
产生一个放大&缩放矩阵pOut,把其结果与要放大&缩放的矩阵进行叉乘
D3DXMatrixScaling
D3DXMATRIX * D3DXMatrixScaling(
D3DXMATRIX *pOut,
FLOAT sx,
FLOAT sy,
FLOAT sz
);
注意4,5,6都是创建一个变化矩阵,而不是把原来的矩阵进行变化!
相关代码参考见:http://download.csdn.net/source/1777759