计算机图形学中的线性代数

一、基础概念

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
    );
}