图形系统与基本图形生成
了解图形学的研究对象、图形系统的软硬件、图形标准与 OpenGL,会算帧缓存容量,掌握 DDA、中点画线、Bresenham 直线算法和中点画圆算法,理解扫描线填充、种子填充与字符生成。
本节导读
计算机图形学大纲分四个部分:图形学和图形系统基本知识;基本图形生成和几何变换;三维物体的表示与显示处理;真实感图形绘制技术。本课用三节讲:本节讲第一部分和第二部分中的直线、二次曲线(以圆为主)的生成、字符和区域填充;第 30 节讲几何变换、窗口视图变换、裁剪和投影;第 31 节讲曲线曲面、三维物体表示和真实感图形。
按常见资料的说法,图形学的题型是判断、填空和问答。本节能出计算的是帧缓存容量和画线、画圆算法的逐步推演,要会列表写出每一步的判别量和像素。
计算机图形学与图形系统
计算机图形学研究怎样用计算机表示、生成、处理和显示图形。图形一般指由点、线、面等几何要素和颜色等属性描述的对象(矢量表示),图像指由像素点阵描述的画面;光栅显示时图形最终也要转成像素。应用领域有计算机辅助设计、科学计算可视化、虚拟现实、计算机动画、游戏和图形用户界面等。
图形系统由硬件和软件组成。光栅扫描显示器把屏幕看成像素阵列,帧缓存(显示存储器)为每个像素保存颜色值,显示控制器按扫描顺序反复读帧缓存来刷新屏幕;帧缓存容量 = 水平分辨率 × 垂直分辨率 × 每像素位数 ÷ 8(字节),每像素 n 位时可同时显示 2n 种颜色。采用颜色查找表时,帧缓存只存表的索引。随机扫描(矢量)显示器则按显示文件直接画线段。
图形软件的标准有 GKS(第一个国际二维图形标准)、PHIGS(支持三维和层次结构)、CGI(设备接口)、CGM(图元文件格式)等。OpenGL 是与硬件和窗口系统无关的图形程序接口,按状态机方式工作:顶点数据经变换、裁剪、视口变换后光栅化成片元,再经纹理、深度测试等处理写入帧缓存。
直线生成算法
画直线就是确定最接近理想直线的像素。下面都以斜率 0≤k≤1 为例,其余情况利用对称性处理。
| 算法 | 思想 | 特点 |
|---|---|---|
| DDA(数值微分法) | x 每步加 1,y 每步加 k,再取整 | 简单,但有浮点运算和取整 |
| 中点画线法 | 用直线方程判断两候选像素的中点在直线上方还是下方 | 只用整数加法 |
| Bresenham 算法 | 用误差项判断下一个像素取 y 还是 y+1 | 只用整数加法,应用最广 |
Bresenham 算法:设 Δx=x1−x0,Δy=y1−y0,判别量初值 p0=2Δy−Δx。每步 x 加 1:若 p<0,y 不变,p←p+2Δy;否则 y 加 1,p←p+2Δy−2Δx。中点画线法的思路相同:直线写成 F(x,y)=ax+by+c,判别中点代入后的符号,结果与 Bresenham 一致。光栅化的直线会出现锯齿(走样),可以用提高分辨率、超采样或区域采样等反走样方法减轻。
圆的生成算法
圆具有八分对称性:算出圆心在原点的圆上一点 (x,y),就能直接得到 (±x,±y)、(±y,±x) 共 8 个点,所以只需计算从 (0,R) 到 x=y 的八分之一圆弧。
中点画圆法:从 (0,R) 开始,每步 x 加 1,在正右方和右下方两个候选像素中选一个。判别式 d 是两候选像素的中点代入 F(x,y)=x2+y2−R2 的值,初值 d0=1.25−R。若 d<0,中点在圆内,取正右方像素,d←d+2x+3;否则取右下方像素,d←d+2(x−y)+5,这里的 x、y 是当前像素的坐标。d0 也可以取 1−R,对整数半径结果相同。椭圆等二次曲线可以用类似的中点算法生成。
区域填充
扫描线多边形填充按扫描线逐条处理:求扫描线与多边形各边的交点,按 x 排序,两两配对,填充每对交点之间的像素。为了提高效率,用边表(ET)和活性边表(AET)保存边的信息,利用相邻扫描线交点的连贯性增量计算交点。扫描线经过顶点时:若顶点是局部极值点(相邻两边在扫描线同一侧),计为两个交点;否则只计一个交点。
本节后面还有约 1748 字:报名学员看全文
每门课前 10 节免费看全文;从第 11 节起,完整教程要报名后由顾问在后台为你的账号开通才能看。
题库账号可以直接登录,但第 11 节起的完整教程要报名后由后台开通才能看。
学完练一练
按本节考点从本课的课后练习里抽题(每次 10 道以内),做完看解析、错题自动进错题本。第 11 节起的课后练习报名学员才能练。
本节内容由 AI 辅助编写,配图由 AI 生成,仅供备考参考;考试要求以《全国各类成人高等学校招生考试大纲(2024 年版)》及浙江省教育考试院当年公布为准。