计算机绘图复习资料Word版.docx
《计算机绘图复习资料Word版.docx》由会员分享,可在线阅读,更多相关《计算机绘图复习资料Word版.docx(16页珍藏版)》请在冰豆网上搜索。
![计算机绘图复习资料Word版.docx](https://file1.bdocx.com/fileroot1/2023-7/26/117aec48-8f2d-4cd0-bfde-12260306cfd4/117aec48-8f2d-4cd0-bfde-12260306cfd41.gif)
计算机绘图复习资料Word版
复习大纲
第一章绘图基础
1.复合文档的概念,熟练掌握文档、视图的概念,熟练掌握文档/视图结构的内涵和特点;掌握视图类的成员函数GetDocument()和文档类的成员函数OnUpdate()的用法;
复合文档:
在一个文档中同时保存了如文本、图像和声音等多种不同类型的数据,而这些数据又可以通过不同的应用程序用不同的格式产生。
文档(Document):
是MFC应用程序中所处理数据的集合,包括文本、图形、图像和表格等类型。
视图(View):
是文档在应用程序窗口中的一个映像。
文档视图结构
✓文档视图结构是MFC应用程序中最基本的程序结构,适用于大多数Windows应用程序;
✓文档和视图完成了程序的大部分功能,是MFC应用程序的核心。
以下不知道是什么
✓应用程序通过视图向用户显示文档中的数据,并把用户的输入解释为对文档的操作;
✓一个视图总是与一个文档对象相关联,用户通过与文档相关联的视图与文档进行交互;
✓视图是一个没有边框的窗口,位于主框架窗口的客户区,是文档对外显示的窗口,必须依附在一个框架窗口内。
一个视图只能拥有一个文档,但一个文档可以同时拥有多个视图。
视图类的成员函数GetDocument()
视图对象通过调用该函数得到当前文档,即返回与视图相关联的文档对象的指针,利用这个指针就可以访问文档类及其派生类的公有成员变量和成员函数。
2.理解设备环境的概念,熟练掌握常用设备环境类CClientDC、CMetaFileDC、
CPaintDC和CWindowDC的区别和联系;
设备环境(devicecontext,DC):
为了实现Windows的设备无关性,应用程序的输出不直接面向显示器或打印机等物理设备,而面向的一个虚拟逻辑设备。
也称为设备描述表或设备上下文,是由Windows管理的一个数据结构,保存了绘图操作中一些共同需要设置的信息,如当前的画笔、字体和位图等图形对象及其属性,以及颜色和背景等影响图形输出的绘图模式。
CDC包括:
CClientDC:
在客户区域绘图时所对应的设备环境类,映射区域是程序的客户区域
CMetaFileDC:
把输出设备设定在一个文件上,该文件可以把绘图操作记录下来并能进行回放,被称为元文件。
CPaintDC:
处理重画请求时处理类
CWindowDC:
允许在显示器的任何地方绘图,包括窗口边框、标题栏等。
(其中,1、3、4仅仅构造/析构函数不同。
这四个一起现实设备环境类)
3.理解GDI对象的概念和作用,掌握常用GDI对象的分类和用法。
图形设备接口(graphicsdeviceinterface,GDI):
Windows提供的一个支持图形编程处理的抽象接口,是Windows系统的重要组成部分,负责系统与用户或绘图程序之间的信息交换,并控制在输出设备上显示图形或文字。
GDI对象:
CGdiObject:
CRgn:
区域是由多边形、椭圆或者二者组合而成的一个范围,可以利用它来进行填充、剪裁以及鼠标命中测试
CPen画笔是一种用来画线及绘制图形边框的工具,可以指定它的颜色及宽度,并且可以指定它的类型。
CPalette调色板是一种颜色映射接口,它允许应用程序在不干扰其它应用程序的前提下,可以充分利用输出设备的颜色描绘能力
CBrush画刷定义了一种位图形式的像素块,利用它可以对区域内部进行填充。
CFnot字体是一种具有某种风格的所有字符的完整集合,它常常被当作资源存于磁盘中,其中有一些还依赖于某种设备。
CBitmat位图是一种矩阵,依次存放了每一个像素的颜色信息,可以利用位图来表示图像,也可以用来创建刷子
第二章绘图程序设计
1.熟练掌握绘图程序设计的一般步骤;
根据实际需要绘制的图形,明确绘图程序的功能或用途→搞清楚图形的几何形成→确定绘图算法→编写绘图程序→上机调试、运行和绘图
2.理解应用程序框架的概念和意义;
应用程序框架:
提供一个一般应用程序所需要的全部面向对象软件组件的集成集合。
应用程序框架的核心是文档与视图的相互关系!
3.掌握OnDraw()函数的作用;
✓应用程序中,几乎所有的“画”的动作都出现在OnDraw()中,或由它来引出。
该函数必须重载。
OnDraw()函数的重载
Ø调用相应的文档对象的函数获取文档数据;
Ø调用GDI(图形设备接口)的函数在视图中画出文档数据。
4.理解文档模板类的作用;理解程序中主窗口类对象、文档类对象和视图类对
象之间的相互关系;理解应用类对象在程序中的作用及特点;
文档模板类(DocumentTemplate)
✓文档模板类用于协调文档对象、视图对象和主窗口对象的创建过程;
✓文档模板类从CDocTemplate或其派生类中派生;
✓一个文档模板可以管理同一文档类型的所有文档;
✓不同类型的文档,必须使用不同的文档模板类;
✓SDI程序唯一文档模板从CSingleDocTemplate派生,MDI程序各文档模板从CMultiDocTemplate派生
文档类(CDocument)
✓文档是用户处理的数据对象;
✓文档一般从CDocument派生,主要用于存储数据;
✓文档如果支持OLE功能,可以从COleDocument或COleServerDoc类中派生;
✓CDocument类用于响应数据文件的读取以及存储CView类所要观察和处理的信息。
视图类(CView)
✓视图相当于文档在应用程序中的观察窗口,它确定了用户对文档的观察方式和用户编辑文档的方式;
✓视图一般从CView类派生,也可以从CScrollView、CEditView、CFormView、CTreeView、CListView和CRichView等类派生;
✓应用程序中,几乎所有的“画”的动作都出现在OnDraw()中,或由它来引出。
该函数必须重载。
主窗口类(MainFrameWindow)
✓主窗口是Windows应用程序中限定其所有窗口范围的最外边的边框;
✓应用程序中的所有其它窗口都直接或间接地是主窗口的子窗口;
✓对于MDI程序,视图占文档窗口的客户区,而文档窗口又是主窗口的子窗口,一个主窗口可以有多个文档窗口;对于SDI应用程序,视图在主窗口中显示,视图占据了主窗口的客户区,主窗口也是文档窗口。
✓SDI应用程序的主窗口类从CFrameWnd派生,MDI程序的主窗口类从CMDIFrameWnd派生。
应用类(CWinApp)
✓一个应用程序有且仅有一个应用类的对象,它控制应用程序其它所有对象,确定程序的特点,并负责应用程序的初始化和清除,以便于创建和管理程序支持的文档模板对象;
✓一个应用类对象代表一个应用程序;
✓应用类对象为全局对象,在主程序之前构造,由WinMain调用。
5.掌握编译预处理指令的概念和分类;掌握编译预处理指令的一般书写格式;
理解带参数的宏定义预处理指令与函数的联系与区别;
编译预处理指令:
在源程序开始部分,以#号开头,占用一个单独的书写行,前面不留空格,结尾不用分号,其作用是告诉编译系统对源程序编译之前的操作。
(1)包含文件预处理指令
格式包括:
#include<文件名>和#include"文件名〞
功能:
在编译源程序之前,用包含文件的内容取代该预处理指令。
作用:
避免重复性劳动,提高工作效率。
(2)宏定义预处理指令
格式:
#define替换名字符串、#define替换名(参数)字符串
(替换名习惯用大写字母)
带参数宏定义预处理指令与函数调用:
☞宏引用只是单纯字符替换,没有数据类型要求与表达式计算;
☞函数调用要求实参与形参类型一致并且在调用时先求出实参表达式的值,然后带入形参。
当要改变某一个常量或表达式的值时,只需在宏定义的地方修改,提高了工作效率。
(3)条件编译预处理指令
格式:
#if表达式
源程序部分1
#else
源程序部分2
#endif
(其中的表达式只能由常量和已定义的替换名组成,不能含有变量。
)
功能:
若给定的表达式条件成立,则保留源程序
部分1,它将被编译成目标代码,而源程
序部分2被删除。
否则,保留部分2,删除
部分1。
作用:
在编译源程序之前,根据给定的表达式条
件决定编译的范围。
6.熟练掌握绘图子程序的分类及特点;
O基本子程序:
直线、圆弧及各种线型、字符等绘图程序,又称为一级子程序。
由MFC类库提供。
O功能子程序:
在基本子程序的基础上编写出来,具有一定的功能和通用性,也叫做二级子程序。
由MFC提供,包括画四边形、圆、椭圆等。
O应用子程序:
在一、二级子程序的基础上,为满足某些绘图需要编写的一些绘制比较复杂图形的程序。
特点是通用性小,可为一些实际绘图需要引用。
也叫三级子程序。
7.掌握常用的绘图方法及特点;
解析法:
根据图形的解析表达式或参数表示式,计算出图形中各点的坐标值等,然后用绘图函数绘出图形。
关键:
用解析式表示图形。
样条法:
当不能用解析式表示或者精确表示一个物体或图形时,采用物体或者图形的一些实际数据值(型值点)构造曲线或曲面来拟合,同时通过不断调整、修正样条曲线或曲面,从而绘制出图形。
变形法:
对基本图形,或称单元图形,施行各种几何变换(如比例、平移、对称、旋转变换等)从而形成新的或更复杂的图形。
拼合法:
将图形分解成若干个基本图形元素(图素),把相同部分的图素编写成通用的子程序,绘制图形时,根据需要调用相应的图素子程序进行拼合,从而得到所需要的图形。
创造法:
在事先没有物体或图形的前提下,设计出一个绘图算法创造性地绘制图形。
特点:
预先并不一定能想象出算法所绘出图形样子,只有程序运行完后才能得到整个图形的形状。
8.理解绘图程序设计成功的要点。
绘图程序设计成功要点
结构化程序设计、分而治之、完好的构思结构、坚持到底!
第三章图形变换
1.理解用户坐标系和屏幕坐标系的概念,理解窗口和视口的概念,熟练掌握用
户坐标系到屏幕坐标系的变换方法;
用户坐标系:
实数域中的直角坐标系或极坐标系的统称。
屏幕坐标系:
屏幕上采用的整数域中的直角左手系,统称为设备坐标系。
窗口:
在用户坐标系中,以确定要显示(或绘制)的图形部分所指定的一矩形域。
视口:
为显示(或绘制)窗口内的图形而在屏幕上任选的一矩形域。
2.理解图形的几何变换的概念及特点,掌握图形几何变换的分类;熟练掌握基
本图形几何变换的矩阵推导;
图形的几何变换:
对图形的几何信息经过变换后产生新的图形。
特点:
1.拓扑关系(连边规则)不变;2.由顶点(或参数方程)的改变实现。
3.理解复合变换的概念,掌握复合变换的推导过程;
复合变换:
图形的复合几何变换的简称,图形作一次以上的基本几何变换,变换结果是每次基本变换矩阵乘积。
4.理解二维裁剪的概念和裁剪处理的基本工作;熟练掌握丹.科恩-伊凡.瑟萨兰
德算法的步骤和测试方法;理解多边形裁剪的概念和逐边裁剪法的基本思想;
二维裁剪
裁剪处理:
把每个图形元素分成窗口内的部分与窗口外的部分,舍弃窗口外部分。
工作:
1.窗口内外的判断;
2.计算图形元素与窗口边界的交点。
丹·科恩——伊凡·瑟萨兰德算法
第一步:
确定该线段是否整个位于窗口内或全部位于窗口外,若属于这两种情况,则全部保留或全部舍弃;
第二步:
对不属于第一步哪两种情况的线段,则被窗口某一边界线分成两部分,再对每一部分按第一步方法判断。
测试方法:
延长窗口各边界,将窗口及其周围共划分为9个区域,中央就是所要裁剪的区域。
每个区域各用一个四位二进制数组成的代码来表示。
当线段的一端点位于某一区域时,便将该区域的代码赋予端点;然后根据线段两端点代码判断线段相对于窗口的位置关系,并决定对该线段如何进行裁剪。
代码意义:
Ø第一位,点在窗口左边界线之左为1,否则为0;
Ø第二位,点在窗口右边界线之右为1,否则为0;
Ø第三位,点在窗口底边界线之下为1,否则为0;
Ø第四位,点在窗口顶边界线之上为1,否则为0。
多边形裁剪
基本问题
Ø一个完整封闭的多边形经裁剪后不再是封闭的,需要用窗口边界的适当部分来封闭它;
Ø边界线段的连接,不适当的连接会产生错误。
逐边裁剪法
Ø把整个多边形先相对于窗口的第一条边界线进行裁剪,形成一个新的多边形;
Ø然后再把这个新的多边形相对于窗口的第二条边界线进行裁剪,再次形成一个新的多边形;
Ø接着用窗口的第三、四条边界线依次进行如此裁剪,最后形成一个经过窗口的4条边界线裁剪后的多边形。
5.熟练掌握三维图形变换矩阵各部分的作用,理解三维基本图形变换矩阵的推
导和用法;
三维图形变换矩阵
6.掌握投影变换的概念和分类;掌握三视图的概念和投影变换矩阵;理解正轴
测图的概念和投影变换矩阵的推导;
三视图即主视图、俯视图和侧视图,是分别将三维立体对正面、水平面和侧面作正平行投影得到的3个基本视图。
正轴测图
将三维立体向一个单一的投影面作平行投影并且投影方向垂直于该投影面时得到的平面图形。
分为正等测、正二测和正三测,常用正等测和正二测。
将三维立体绕某一坐标轴旋转一个角度,再绕另一坐标轴旋转一个角度,最后向包含这两个坐标轴的平面作正投影即得到正轴测图。
未知问题请看ppt
7.熟练掌握透视投影的相关概念;理解透视投影的获取方法;熟练掌握透视投
影变换过程,及透视投影变换矩阵的推导;
投影中心C透视投影中所有投射线都从空间一点投射,这点称为投影中心,也称为视点。
透视投影C一般将投影面(屏幕画面、画面)放在观察者和三维物体之间,视点与物体上点的连线(即投射线)与投影面的交点就是物体上点的透视投影。
&透视投影的获取
O物体不动,视点在观察坐标系中绕物体在空间或球体上变化位置,从而在垂直于视点和物体所在坐标系原点的连线的平面(即画面)上产生该物体不同方向的透视图;
O视点不动,物体在用户坐标系中变动位置,如平移或旋转等,从而也可在画面上得到该物体不同方向的透视图。
&透视投影变换过程
✍先把用户坐标系下物体的点变换成观察坐标系中的点,再把观察坐标系下的点变换成屏幕坐标系中的点。
8.理解灭点的概念;掌握三种透视图的概念和变换矩阵推导过程;理解视点、
画面和物体三者在透视投影中的位置关系。
灭点:
任何一束不平行于投影平面的平行线的透视投影汇聚成一点,这样的点称为灭点。
(灭点是直线上无穷远点在透视图上的反映。
)
一点透视图:
只有一个坐标轴方向有灭点的透视图。
当透视投影面即屏幕画面平行于用户坐标系中的一个坐标轴时,物体透视投影图为二点透视图。
当透视投影面既不平行于用户坐标系中的任一个坐标轴,也不平行于用户坐标系中的任一坐标平面时,物体透视投影图为三点透视图。
视点、画面、物体三者位置关系
画面在视点和物体之间;
物体在画面和视点中间;
视点在画面和物体中间。
第四章曲线绘制
1.理解数据的概念及其在计算机程序中的作用;(ppt翻阅)
2.理解图形的几何信息与拓扑信息的概念和作用,理解两者之间的联系和区别;
几何信息:
描述几何元素(如点、线、面等)空间位置的信息。
作用:
几何信息可用来表示三维形体,但常常存在着表示上的不唯一性。
拓扑信息:
描述几何元素之间的相互连接关系的信息。
作用:
只反映几何元素的结构关系,不考虑各自的绝对位置。
3.理解计算机程序对图形数据结构的基本要求;
✍能记录图形数据与数据间相互关系;
✍能完全而且唯一地确定所对应的图形;
✍节省内存单元;
✍管理方便,即建立数据结构、查找、搜索和修改数据方便。
4.理解表结构和树结构的概念;理解表结构和树结构的特点;掌握单链三表表
示图形数据的方法;
表结构:
用具有数据的表来记录图形元素的数据结构。
三表:
三维形体的顶点、棱边和面三张表。
单链:
用来指示顶点、棱边和面之间的连接关系。
树结构
Ø除根结点外,每个结点有且只有一个直接前驱;
Ø除终端结点外,每个结点可以有不只一个直接
后继。
5.掌握二叉树的概念和特点,理解二叉树的存储结构,熟练掌握二叉树的遍历
方法,掌握树与二叉树之间的转换规则;掌握二叉排序树的构造方法(数据结构的问题);
二叉树:
一种不同于树的数据结构,它的每个结点至多有两棵子树,子树有左右之分,即不能颠倒。
满二叉树:
深度为K的有2k-1个结点的二叉树。
顺序二叉树:
深度为k、结点为n的二叉树,它从1到n的序号与深度为k的满二叉树的结点序号一致。
完全二叉树:
结点的度数或者为零或者为2的二叉树。
(二叉树的遍历学过这里略)
转换规则:
树的根结点作为二叉树的根结点;结点最左端的孩子作为二叉树的左孩子;结点右端的第一个兄弟是其右孩子。
6.理解常规曲线的绘制方法,掌握中点圆算法;
7.理解样条曲线的概念和分类,理解样条曲线的参数坐标函数形式表述方法;
理解样条曲线的连续性分类和定义;
样条曲线:
由多项式曲线段连接而成的曲线,在每段的边界处满足特定的连续性条件。
分类:
插值样条曲线,逼近样条曲线:
8.熟练熟练掌握抛物样条曲线的矢量表达式和过不在一直线上三点的抛物线方
程的推导;理解抛物线加权合成的意义;掌握抛物样条曲线公共部分参数方
程的意义及推导过程,掌握利用抛物样条曲线公共部分参数方程进行曲线绘
制的方法。
(第八题请看ppt)
考试说明:
本次考试为闭卷考试,满分100分,考试时间120分钟。
其中,填
空题10小题,每小题3分,共计30分;简答题5小题,每小题6分,共计
30分;解答题3小题,第1小题10分,2、3小题各15分,共计40分。
(注:
可编辑下载,若有不当之处,请指正,谢谢!
)