【平移矩阵】
1 0 0 0
0 1 0 0
0 0 1 0
x y z 1
◆DirectX 9.0 函数实现◆
D3DXMATRIX* D3DXMatrixTranslation(
D3DXMATRIX *pOut, // 返回的平移后的结果
FLOAT x, // x轴上的平移量
FLOAT y, // y轴上的平移量
FLOAT z); // z轴上的平移量
【绕X轴的旋转矩阵】
1 0 0 0
0 cosΘ sinΘ 0
0 -sinΘ cosΘ 0
0 0 0 1
【绕Y轴的旋转矩阵】
cosΘ 0 -sinΘ 0
0 1 0 0
sinΘ 0 cosΘ 0
0 0 0 1
【绕Z轴的旋转矩阵】
cosΘ sinΘ 0 0
-sinΘ cosΘ 0 0
0 0 1 0
0 0 0 1
◆DirectX 9.0 函数实现◆
// 创建一个绕X轴旋转的矩阵
D3DXMATRIX * D3DXMatrixRotationX(
D3DXMATRIX *pOut, // 指向D3DXMATRIX 结构的操作结果矩阵
FLOAT Angle); // 绕着X轴旋转的角度(单位是弧度)。角度计算方法是当朝着旋转轴的原点看去时,顺时针方向为正值
// 创建一个绕Y轴旋转的矩阵
D3DXMATRIX * D3DXMatrixRotationY(
D3DXMATRIX *pOut, // 指向D3DXMATRIX 结构的操作结果矩阵
FLOAT Angle); // 绕着Y轴旋转的角度(单位是弧度)
// 创建一个绕Z轴旋转的矩阵
D3DXMATRIX * D3DXMatrixRotationZ(
D3DXMATRIX *pOut, // 指向D3DXMATRIX 结构的操作结果矩阵
FLOAT Angle); // 绕着Z轴旋转的角度(单位是弧度)
其他:
// 创建一个可以绕着任意轴旋转的旋转矩阵
D3DXMATRIX * D3DXMatrixRotationAxis(
D3DXMATRIX *pOut, // 指向D3DXMATRIX 结构的操作结果矩阵
CONST D3DXVECTOR3 *pV, // 指向任意轴向量
FLOAT Angle); // 绕着任意轴旋转的角度(单位是弧度)。
// 用指定的绕Y轴角度,绕X轴角度和Z轴角度创建旋转矩阵
D3DXMATRIX * D3DXMatrixRotationYawPitchRoll(
D3DXMATRIX *pOut, // 指向D3DXMATRIX 结构的操作结果矩阵
FLOAT Yaw, // 绕着Y轴旋转角度(单位弧度)
FLOAT Pitch, // 绕着X轴旋转角度(单位弧度)
FLOAT Roll); // 绕着Z轴旋转角度(单位弧度)
// 从一个四元组创建一个旋转矩阵
D3DXMATRIX * D3DXMatrixRotationQuaternion(
D3DXMATRIX *pOut, // 指向D3DXMATRIX 结构的操作结果矩阵
CONST D3DXQUATERNION *pQ); // 指向 D3DXQUATERNION 结构的四元组
【放大/缩小矩阵】
sx 0 0 0
0 sy 0 0
0 0 sz 0
0 0 0 1
◆DirectX 9.0 函数实现◆
// 创建一个沿着X,Y和Z轴方向缩放矩阵
D3DXMATRIX * D3DXMatrixScaling(
D3DXMATRIX *pOut, // 指向D3DXMATRIX 结构的操作结果矩阵
FLOAT sx, // 沿着X轴的缩放系数
FLOAT sy, // 沿着Y轴的缩放系数
FLOAT sz); // 沿着Z轴的缩放系数
【坐标系变换矩阵】
px qx rx 0
py qy ry 0
pz qz rz 0
0 0 0 1