杭杭州紫金港培训学校(紫金港专升本)
同等学力申硕计算机科学与技术学科综合考前辅导第十一章 计算机图形学第 29 节 / 共 32 节约 30 分钟报名学员看全文

图形系统与基本图形生成

了解图形学的研究对象、图形系统的软硬件、图形标准与 OpenGL,会算帧缓存容量,掌握 DDA、中点画线、Bresenham 直线算法和中点画圆算法,理解扫描线填充、种子填充与字符生成。

本节考点:图形系统与显示原理直线生成算法圆的生成算法区域填充字符生成

本节导读

计算机图形学大纲分四个部分:图形学和图形系统基本知识;基本图形生成和几何变换;三维物体的表示与显示处理;真实感图形绘制技术。本课用三节讲:本节讲第一部分和第二部分中的直线、二次曲线(以圆为主)的生成、字符和区域填充;第 30 节讲几何变换、窗口视图变换、裁剪和投影;第 31 节讲曲线曲面、三维物体表示和真实感图形。

按常见资料的说法,图形学的题型是判断、填空和问答。本节能出计算的是帧缓存容量和画线、画圆算法的逐步推演,要会列表写出每一步的判别量和像素。

计算机图形学与图形系统

计算机图形学研究怎样用计算机表示、生成、处理和显示图形。图形一般指由点、线、面等几何要素和颜色等属性描述的对象(矢量表示),图像指由像素点阵描述的画面;光栅显示时图形最终也要转成像素。应用领域有计算机辅助设计、科学计算可视化、虚拟现实、计算机动画、游戏和图形用户界面等。

图形系统由硬件和软件组成。光栅扫描显示器把屏幕看成像素阵列,帧缓存(显示存储器)为每个像素保存颜色值,显示控制器按扫描顺序反复读帧缓存来刷新屏幕;帧缓存容量 = 水平分辨率 × 垂直分辨率 × 每像素位数 ÷ 8(字节),每像素 nnn 位时可同时显示 2n2^n2n 种颜色。采用颜色查找表时,帧缓存只存表的索引。随机扫描(矢量)显示器则按显示文件直接画线段。

图形软件的标准有 GKS(第一个国际二维图形标准)、PHIGS(支持三维和层次结构)、CGI(设备接口)、CGM(图元文件格式)等。OpenGL 是与硬件和窗口系统无关的图形程序接口,按状态机方式工作:顶点数据经变换、裁剪、视口变换后光栅化成片元,再经纹理、深度测试等处理写入帧缓存。

直线生成算法

画直线就是确定最接近理想直线的像素。下面都以斜率 0≤k≤10 \le k \le 10≤k≤1 为例,其余情况利用对称性处理。

算法思想特点
DDA(数值微分法)xxx 每步加 1,yyy 每步加 kkk,再取整简单,但有浮点运算和取整
中点画线法用直线方程判断两候选像素的中点在直线上方还是下方只用整数加法
Bresenham 算法用误差项判断下一个像素取 yyy 还是 y+1y + 1y+1只用整数加法,应用最广

Bresenham 算法:设 Δx=x1−x0\Delta x = x_1 - x_0Δx=x1​−x0​,Δy=y1−y0\Delta y = y_1 - y_0Δy=y1​−y0​,判别量初值 p0=2Δy−Δxp_0 = 2\Delta y - \Delta xp0​=2Δy−Δx。每步 xxx 加 1:若 p<0p < 0p<0,yyy 不变,p←p+2Δyp \leftarrow p + 2\Delta yp←p+2Δy;否则 yyy 加 1,p←p+2Δy−2Δxp \leftarrow p + 2\Delta y - 2\Delta xp←p+2Δy−2Δx。中点画线法的思路相同:直线写成 F(x,y)=ax+by+cF(x, y) = ax + by + cF(x,y)=ax+by+c,判别中点代入后的符号,结果与 Bresenham 一致。光栅化的直线会出现锯齿(走样),可以用提高分辨率、超采样或区域采样等反走样方法减轻。

圆的生成算法

圆具有八分对称性:算出圆心在原点的圆上一点 (x,y)(x, y)(x,y),就能直接得到 (±x,±y)(\pm x, \pm y)(±x,±y)、(±y,±x)(\pm y, \pm x)(±y,±x) 共 8 个点,所以只需计算从 (0,R)(0, R)(0,R) 到 x=yx = yx=y 的八分之一圆弧。

中点画圆法:从 (0,R)(0, R)(0,R) 开始,每步 xxx 加 1,在正右方和右下方两个候选像素中选一个。判别式 ddd 是两候选像素的中点代入 F(x,y)=x2+y2−R2F(x, y) = x^2 + y^2 - R^2F(x,y)=x2+y2−R2 的值,初值 d0=1.25−Rd_0 = 1.25 - Rd0​=1.25−R。若 d<0d < 0d<0,中点在圆内,取正右方像素,d←d+2x+3d \leftarrow d + 2x + 3d←d+2x+3;否则取右下方像素,d←d+2(x−y)+5d \leftarrow d + 2(x - y) + 5d←d+2(x−y)+5,这里的 xxx、yyy 是当前像素的坐标。d0d_0d0​ 也可以取 1−R1 - R1−R,对整数半径结果相同。椭圆等二次曲线可以用类似的中点算法生成。

区域填充

扫描线多边形填充按扫描线逐条处理:求扫描线与多边形各边的交点,按 xxx 排序,两两配对,填充每对交点之间的像素。为了提高效率,用边表(ET)和活性边表(AET)保存边的信息,利用相邻扫描线交点的连贯性增量计算交点。扫描线经过顶点时:若顶点是局部极值点(相邻两边在扫描线同一侧),计为两个交点;否则只计一个交点。

本节后面还有约 1748 字:报名学员看全文

每门课前 10 节免费看全文;从第 11 节起,完整教程要报名后由顾问在后台为你的账号开通才能看。

题库账号可以直接登录,但第 11 节起的完整教程要报名后由后台开通才能看。

学完练一练

按本节考点从本课的课后练习里抽题(每次 10 道以内),做完看解析、错题自动进错题本。第 11 节起的课后练习报名学员才能练。

本节内容由 AI 辅助编写,配图由 AI 生成,仅供备考参考;考试要求以《全国各类成人高等学校招生考试大纲(2024 年版)》及浙江省教育考试院当年公布为准。

我要提问免费报名咨询