第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 矩阵表示: .. math:: \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} 其中,平移变换矩阵为: .. math:: T(t_x, t_y) = \begin{bmatrix} 1 & 0 & t_x \\ 0 & 1 & t_y \\ 0 & 0 & 1 \end{bmatrix} 旋转变换矩阵(绕原点旋转 :math:`\theta` 角)为: .. math:: R(\theta) = \begin{bmatrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{bmatrix} 3.2.3三维图形几何变换 ~~~~~~~~~~~~~~~~~~~~~~ 1. 三维平移变换 2. 三维旋转变换 3. 三维比例变换 4. 三维对称变换 5. 三维错切变换 6. 三维组合变换 3.2.4三维图形的投影变换 ~~~~~~~~~~~~~~~~~~~~~~~~~ 1. 三视图 投影方向垂直于投影平面时称为正平行投影,通常说的三视图均属于正平行投影。 2. 正轴测图 轴测图具有一定的立体感,可以帮助设计者或生产者了解物体的形状。 3.3图形的消隐技术 ------------------- 1. 画家算法 画家算法的基本思想,是先把屏幕置为背景色,再把物体的各个面按其离视点的远近进行排序。离视点远的在表头, 离视点近的在表尾,构造深度优先表。然后,从表头至表尾逐个取出多边形,投影到屏幕上,显示多边形所包含的实心区域。 由于后显示的图形取代先显示的图画,而后显示的图形所代表的面离视点更近,所以,由远及近地绘制各面,就相当于消除隐藏面。 2. 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)中的图形变换与消隐实现