D3D中的向量和矩阵
D3D中的向量
D3DXVETOR3类来表示
向量的长度:在游戏中的角色向某一个方向走动的时候,是用向量的长度来控制步伐的长度/速度的,而向量的方向表示了角色走动的方向。
向量的减法:u-v=-v+u
向量的叉积。
矩阵的操作
D3DXMATRIX:public D3DMATRIX (4×4的矩阵结构体)
单位化矩阵 I= - -
| 1 0 0 |
| 0 1 0 |
| 0 0 1 |
- -
平移矩阵:向量的信息被分行存储在物体的世界矩阵中。
T = - -
| 1 0 0 0 |
| 0 1 0 0 |
| 0 0 1 0 |
| x y z 1 |
- -
旋转矩阵: x = - -
| 1 0 0 0 |
| 0 C S 0 |
| 0-S C 0 |
| 0 0 0 1 |
- -
y = - -
| C 0 -S0 |
| 0 1 0 0 |
| S 0 C 0 |
| 0 0 0 1 |
- -
z = - -
| C S 0 0 |
|-S C 0 0 |
| 0 0 1 0 |
| 0 0 0 1 |
- -
放缩矩阵: S= - -
| x 0 0 0 |
| 0 y 0 0 |
| 0 0 z 0 |
| 0 0 0 0 |
- -
混合变换: R=S*X*Y*Z*T(世界矩阵变换)
R=T*X*Y*Z(摄像机矩阵变换)
四元数:四元数是一个旋转轴和一个旋转角度,它定义了一次旋转
θ=(x,y,z,w),w是旋转角度
创建四元数旋转 -> 转换为相应的矩阵。
投影:摄像机和观察变换空间原点之间的距离为D,投影矩阵应为:
- -
| 1 0 0 0 |
| 0 1 0 0 |
| 0 0 1 1/D |
| 0 0 0 1 |
- -
摄像机矩阵通过设Z轴方向平移-D来平移摄像机到原点,平移矩阵为
- -
| 1 0 0 0 |
| 0 1 0 0 |
| 0 0 1 0 |
| 0 0 -D 1 |
- -
两者相乘得:
- -
| 1 0 0 0 |
| 0 1 0 0 |
| 0 0 1 1/D |
| 0 0 -D 0 |
- -