一、基础概念
1. 向量基础
- 几何意义:方向与长度的数学抽象
- 基本运算:
- 加减法:三角形法则(头尾相接)
- 标量乘法:$\lambda\vec{v}$ 改变长度不改变方向
- 规范化:$\hat{v} = \frac{\vec{v}}{|\vec{v}|}$ 单位向量获取
2. 矩阵基础
- 图形学作用:几何变换的数学表达
- 特殊矩阵:
- 单位矩阵(恒等变换)
- 对角矩阵(轴向缩放)
- 正交矩阵(旋转变换)
二、核心运算
1. 点积(Dot Product)
- 计算公式:$\vec{a} \cdot \vec{b} = |\vec{a}||\vec{b}|\cos\theta$
- 图形学应用:
- 光照强度计算(表面法线方向与光线方向)
- 投影长度测量
- 向量夹角判断
2. 叉积(Cross Product)
- 右手定则:$\vec{a} \times \vec{b}$ 方向判定
- 图形学应用:
- 表面法向量计算
- 多边形可见性判断
- 坐标系构建(切线空间)
三、几何变换
1. 二维变换
| 变换类型 |
矩阵表示 |
示例 |
| 平移 |
$\begin{bmatrix}1&0&t_x\0&1&t_y\0&0&1\end{bmatrix}$ |
UI元素位置调整 |
| 旋转 |
$\begin{bmatrix}\cosθ&-\sinθ&0\\sinθ&\cosθ&0\0&0&1\end{bmatrix}$ |
角色朝向调整 |
| 缩放 |
$\begin{bmatrix}s_x&0&0\0&s_y&0\0&0&1\end{bmatrix}$ |
场景物体大小调整 |
2. 三维变换
- 齐次坐标:$(x,y,z,w)$ 统一表示点与向量
- 组合变换:模型矩阵 = 平移 × 旋转 × 缩放
- 法向量变换:需使用逆转置矩阵保持垂直性
四、图形学实战应用
1. 视图变换
// 构建LookAt矩阵示例
Matrix4x4 LookAt(Vec3 eye, Vec3 target, Vec3 up) {
Vec3 z = (eye - target).normalized();
Vec3 x = cross(up, z).normalized();
Vec3 y = cross(z, x);
return Matrix4x4(
x.x, x.y, x.z, -dot(x,eye),
y.x, y.y, y.z, -dot(y,eye),
z.x, z.y, z.z, -dot(z,eye),
0, 0, 0, 1
);
}