第3章 计算机图形处理技术

学习目标

  1. 掌握常用图形(直线、圆弧、曲线)的生成算法及其在显示器上的呈现原理

  2. 理解二维/三维图形几何变换的矩阵表示及组合变换的合成方法

  3. 熟悉常用消隐算法(画家算法、Z 缓冲区)的基本思想与适用场景

核心概念

  • 图形生成算法:在光栅显示器上生成基本图元(直线 DDA、bresenham、圆弧等)的方法

  • 窗口与视区:在世界坐标系中定义的可见区域(窗口)和设备坐标系中对应的显示区域(视区)

  • 齐次坐标变换:用 n+1 维向量表示 n 维几何变换,使平移、缩放、旋转等变换统一为矩阵乘法

  • 几何变换矩阵:表示平移、旋转、比例、对称、错切等变换的二维/三维矩阵

  • 投影变换:将三维模型映射到二维平面的过程,包括正平行投影(三视图)与轴测投影

  • 消隐技术:识别并去除被遮挡的不可见线/面,使显示图形更具真实感

本章导读

本章从图形显示原理出发,介绍光栅显示器上直线的生成、几何变换的矩阵方法以及三维投影与消隐技术。这些内容是 CAD 软件实现视图操作(缩放、旋转、平移)和真实感显示的基础,也是理解 OpenGL 等图形 API 工作原理的预备知识。

3.1基本图形生成技术及算法

3.1.1图形在计算机屏幕上的显示

3.1.2图形的生成方法

  1. 轮廓线法

  2. 参数化法

  3. 图形元素拼合法

  4. 尺寸驱动法

  5. 三维实体投影法

3.2图形的几何变换技术

3.2.1窗口与视区

  1. 世界坐标系与窗口

  2. 设备坐标系与视区坐标系

  3. 世界坐标系与设备坐标系的转换

  4. 窗口与视区的变换

3.2.2二维图形几何变换

  1. 平移变换

  2. 旋转变换

  3. 比例变换

  4. 对称变换

  5. 错切变换

  6. 二维图形的组合变换

二维齐次变换矩阵

二维图形的齐次坐标变换可以用 3×3 矩阵表示:

\[\begin{split}\begin{bmatrix} x' \\ y' \\ 1 \end{bmatrix} = \begin{bmatrix} a & b & c \\ d & e & f \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \end{bmatrix}\end{split}\]

其中,平移变换矩阵为:

\[\begin{split}T(t_x, t_y) = \begin{bmatrix} 1 & 0 & t_x \\ 0 & 1 & t_y \\ 0 & 0 & 1 \end{bmatrix}\end{split}\]

旋转变换矩阵(绕原点旋转 \(\theta\) 角)为:

\[\begin{split}R(\theta) = \begin{bmatrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{bmatrix}\end{split}\]

3.2.3三维图形几何变换

  1. 三维平移变换

  2. 三维旋转变换

  3. 三维比例变换

  4. 三维对称变换

  5. 三维错切变换

  6. 三维组合变换

3.2.4三维图形的投影变换

  1. 三视图

投影方向垂直于投影平面时称为正平行投影,通常说的三视图均属于正平行投影。

  1. 正轴测图

轴测图具有一定的立体感,可以帮助设计者或生产者了解物体的形状。

3.3图形的消隐技术

  1. 画家算法

画家算法的基本思想,是先把屏幕置为背景色,再把物体的各个面按其离视点的远近进行排序。离视点远的在表头, 离视点近的在表尾,构造深度优先表。然后,从表头至表尾逐个取出多边形,投影到屏幕上,显示多边形所包含的实心区域。 由于后显示的图形取代先显示的图画,而后显示的图形所代表的面离视点更近,所以,由远及近地绘制各面,就相当于消除隐藏面。

  1. Z缓冲区算法

Z缓冲区算法需要一个帧缓冲区来存放各个像素的亮度值,还需要一个Z缓冲区来存放每个像素的深度值,即Z坐标。

关键术语

  • 图形生成算法(Graphics Generation Algorithm)

  • 设备坐标系(Device Coordinate System, DCS)

  • 世界坐标系(World Coordinate System, WCS)

  • 窗口(Window)/视区(Viewport)

  • 齐次坐标(Homogeneous Coordinates)

  • 变换矩阵(Transformation Matrix)

  • 正平行投影(Orthographic Projection)

  • 轴测投影(Axonometric Projection)

  • 消隐(Hidden Surface Removal)

  • 画家算法(Painter's Algorithm)

  • Z 缓冲区算法(Z-Buffer Algorithm)

  • 深度优先表(Depth Priority List)

工程应用场景

CAD 软件视图操作

二维/三维几何变换矩阵是 CAD 软件实现缩放、旋转、平移、镜像等视图操作的核心,用户拖动鼠标即触发对应变换矩阵的实时更新。

工程图三视图生成

通过正平行投影将三维模型沿主视图、俯视图、左视图方向投影,自动生成符合国标的工程图。

装配爆炸图与可视化

利用几何变换实现零件的位移/旋转爆炸分解,并结合 Z 缓冲区消隐技术呈现装配体的空间关系。

复习问题

  1. 什么是齐次坐标?为什么要引入齐次坐标来表示几何变换?

  2. 三视图与轴测图在投影方式上有什么本质区别?各自的工程用途是什么?

  3. 比较画家算法和 Z 缓冲区算法的优缺点,并说明各自的适用场景。

延伸学习建议

  • 学习 OpenGL 或 WebGL 基础,亲手实现一个二维图形的平移/旋转/缩放交互程序

  • 阅读 Foley《计算机图形学原理及实践》前 5 章,深化对图形管线与变换矩阵的理解

  • 了解现代渲染引擎(Unity/Unreal)中的图形变换与消隐实现