(1)平移
我们能通过与下面的矩阵相乘把向量(x, y, z, 1)沿x轴移动px个单位,沿y轴移动py 个单位, 沿z 轴移动pz个单位。
只需要用位置向量(x, y, z, 1)和矩阵做乘法运算即可,对应的矩阵是:
DX中对应的平移函数是:
D3DXMatrix *D3DXMatrixTranslation(D3DXMatrix *pOut,FLOAT x,FLOAT y,FLOAT z);
(2) 旋转
我们能用下面的矩阵把一个向量围绕 x,y 和 z 轴旋转δ弧度。注意:当我们俯视绕轴原点时,角度是指顺时针方向的角度。
只需要用位置向量(x, y, z, 1)和矩阵做乘法运算即可,对应的矩阵是:
(3)缩放
缩放其实就是在对应的坐标上乘以一个系数,这样就可以实现相对差距离是原来的多少倍,我们能通过与下面的矩阵相乘把向量沿 x 轴缩放 qx 个单位,沿 y 轴缩放 q
y 个单位,沿 z 轴缩放qz 个单位。
对应的缩放矩阵如下:
D3DX中缩放矩阵函数为:
D3DXMatrix *D3DXMatrixScale(D3DXMatrix *pOut,FLOAT sx,FLOAT sy,FLOAT sz);
(4)DX 中点,向量跟矩阵相乘
(1)w=1表示点;w=0表示是向量。
(2)D3DXVec3TransfomCoord处理过程如下:
pOut.x = pv.x * pM._11 + pv.y * pM_21 + pv.z * pM_31 + pM_41;
pOut.y = pv.x * pM._12 + pv.y * pM_22 + pv.z * pM_32 + pM_42;
pOut.z = pv.x * pM._13 + pv.y * pM_23 + pv.z * pM_33 + pM_43;
w = 1
(3)D3DXVec3TransformNormal处理过程如下:
pOut.x = pv.x * pM._11 + pv.y * pM_21 + pv.z * pM_31;
pOut.y = pv.x * pM._12 + pv.y * pM_22 + pv.z * pM_32;
pOut.z = pv.x * pM._13 + pv.y * pM_23 + pv.z * pM_33;
w = 0