图形层次结构.pptx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《图形层次结构.pptx》由会员分享,可在线阅读,更多相关《图形层次结构.pptx(33页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、会计学1图形层次结构图形层次结构5.1 5.1 图形的层次结构概述图形的层次结构概述基本概念:基本概念:图形结构图形结构vv也称为几何模型,是由具有明确几何定义的元素,如点、线、也称为几何模型,是由具有明确几何定义的元素,如点、线、面等及其相互间连接关系组成。面等及其相互间连接关系组成。基本图素点、线、面等称为基本图素/图元基本图素之间的连接关系称为拓扑关系在层次结构中,由基本元素构成的对象可用来构成更复杂的对象,这类对象也称为基本元素。第2页/共33页第1页/共33页图形层次结构的组成部图形层次结构的组成部分分几何及其他附属属性几何及其他附属属性 物体及组成物体的基本元素的几何属性和其他影响
2、外物体及组成物体的基本元素的几何属性和其他影响外表表 的属性,如颜色、线形和线宽等。的属性,如颜色、线形和线宽等。拓扑关系物体及基本元素之间的拓扑关系,拓扑关系可以用树结构或邻接矩阵表示,也可由其内在的几何定义表示。特定的图形结构,用来表示一些特定的属性。与物体及基本元素相对应的数据值和属性,如电子文本和描述文字。第3页/共33页第2页/共33页自底向上的设计方法自底向上的设计方法图形结构常常是层次的计算机硬件结构图是由很多诸如运算器、控制器及存储器部件等部件组成的,每一部件又由一些标准的单元电路、门电路及触发器组成。图形设计时,往往用自底向上的方法设计复杂的层次结构图首先由基本的图形元素如线
3、、圆弧等构建形成门、窗和楼梯(高一层的图素),再由直线段、圆弧等基本元素和门、窗、楼梯等高一层的图素形成房间和层等更高一层的结构,最后组成一栋楼房,这些高层图素一般称为块(block)或子图。只要在图形结构中存在结构相同的部分,而这些部分又在图形结构中出现多次,就可把这样的部分组成块。第4页/共33页第3页/共33页 在该结构中,与门、非门及或门电路是基本电路,分别由不同的基本图素线段及圆弧构成。可把与门、非门及或门组织成三个块,任何逻辑图便可利用这三个块和基本元素根据实际组合来构成。同一个块可以有不同的实例,这些实例在图中的位置,大小和方向都可以不同。这些门电路可以组成一些基本电路块(如触发
4、器),而逻辑电路又由这些基本电路块及门电路块组成,这样便形成了一个多层的层次结构。图5.1 由门电路组成的逻辑电路实例:逻辑电路图设计中的层次结构实例:逻辑电路图设计中的层次结构第5页/共33页第4页/共33页实例实例与或非与第6页/共33页第5页/共33页 利用了层次结构最主要的好处是可以将一利用了层次结构最主要的好处是可以将一组相关的图素组织在一起,进行整体的插组相关的图素组织在一起,进行整体的插入、删除、移动和放缩等操作。入、删除、移动和放缩等操作。层次结构的优点层次结构的优点 由于在图中一个块虽在图中多处出现,但由于在图中一个块虽在图中多处出现,但它的几何及拓扑信息是相同的,因此只需保
5、它的几何及拓扑信息是相同的,因此只需保存一次,所以可以节省大量的内存。存一次,所以可以节省大量的内存。第7页/共33页第6页/共33页 利用面向对象的程序设计类的继承特性,可以很好地实现图形的层次结构,下面讨论层次结构的具体表示和相关的操作。通过对已有对象进行增加或部分修改的方法建立新的对象,对已有对象可以增加数据和过程,也可以对其中某些过程进行从新定义。最初的类被称为基类,从基类扩展出来的类称为派生类。这样,我们可以采用对象派生的方法建立一个有层次的对外部世界的描述 5.2 5.2 面向对象的层次结面向对象的层次结构的实现构的实现第8页/共33页第7页/共33页5.2.1 5.2.1 面向对
6、象的层次面向对象的层次结构表示结构表示 将结构中的基本图素定义为类,并定义相应的数将结构中的基本图素定义为类,并定义相应的数据和方法来实现基本图素,基本图素的类又可据和方法来实现基本图素,基本图素的类又可以通过对其增加和更新形成更高一层的图形部以通过对其增加和更新形成更高一层的图形部件件class Element UINT nType;void draw();boolean select(x,y);modify();delete();void setColor(int color);int getColor();class Line:public Elementfloat x0,y0,x1,y
7、1;void draw().class Circle public Element float xc,yc,xs,ys,xe,ye;void draw().用类Line,Circle 等来描述直线段、圆弧等基本图形元素,它们是构成层次结构中块的最基本的元素。可以将OpenGL的函数嵌入以实现Line类的draw()函数。void draw()glBegin(GL_LINES);glVertex2f(x0,y0);glVertex2f(x1,y1);glEnd();第9页/共33页第8页/共33页图形结构块图形结构块2.2.2.2.图形结构块图形结构块图形结构块图形结构块 class Block
8、 public Element class Block public Element char*name;char*name;CElement *eList CElement *eList;Block*next;Block*next;void draw()void draw().图形结构块是由多个直线段、圆弧等基本图形元素和多个块的实例组成的,由基本元素和块实例形成的块又可以借助于块实例成为高层块的组成部分,形成一个嵌套结构,当然最底层的块只能由基本图形元素组成。eList用来保存构成块的所有基本图形元素和块实例的对象指针,它可以是一个动态数组,也可以用链表等线性表结构实现。绘制图块时,遍历线
9、性表中的所有对象,调用对象的draw()方法就可以完成整个块的绘制。类Block中的name用来保存块的名字,可用于标识块,当然也可以根据具体的应用附加其他的属性进行扩充。next指针指向下一个块结构,通过它可以将该块及块中所涉及子块连接在一起。第10页/共33页第9页/共33页块的实例块的实例3.3.3.3.块的实例块的实例块的实例块的实例class Instance public Elementclass Instance public Element Block *pt;Block *pt;float dx,dy,rax,ray,sx,sy;float dx,dy,rax,ray,sx,
10、sy;把块的实例放在图中把块的实例放在图中(所在的高层的块所在的高层的块)的不同位置,的不同位置,这相对于世界坐标系来讲是一个平移变换。这相对于世界坐标系来讲是一个平移变换。同一个块在不同位置的实例其大小、方向和位置可以同一个块在不同位置的实例其大小、方向和位置可以不同,不同,因此要在世界坐标变换基础上作一个局部的变换,这因此要在世界坐标变换基础上作一个局部的变换,这种局部变换就是我们第四章讲的变换。种局部变换就是我们第四章讲的变换。第11页/共33页第10页/共33页块的实例块的实例一般把块的中心放在坐标原点,通过局部变换产生放在不同位置及不同大小方向的实例图5.2 通过局部变换产生放在不同
11、位置及不同大小方向 在类Instance中我们分别用dx,dy,rax,ray,sx,sy表示变换的参数,用于描述实例实际的位置、大小和旋转角度。第12页/共33页第11页/共33页块的实例块的实例这里并不要求专门建立局部坐标系的变换,我这里并不要求专门建立局部坐标系的变换,我们还是可以用世界坐标中的变换来实现。在们还是可以用世界坐标中的变换来实现。在OpenGLOpenGL中世界坐标系的二维变换为:中世界坐标系的二维变换为:glScaleglScale(sxsx,sy,0,0sy,0,0)在在x x、y y方方向分别放缩向分别放缩sxsx及及sysy倍倍 glRotateglRotate(r
12、ax,ray,0,0rax,ray,0,0)旋转旋转rara角角 gltranslategltranslate(dxdx,dy,0,0dy,0,0)在在x x、y y方向分别平移方向分别平移dxdx、dy dy 第13页/共33页第12页/共33页5.2.2 5.2.2 面向对象的层次结构编辑面向对象的层次结构编辑图形块的存取操作 用命令Block*createBlock(name)创建一个名为name值的新图形块,用Block*openBlock(name)打开一个已存在的图形块;用closeBlock(name)关闭当前打开的图形块;用bool deleteBlock(name)删除名为n
13、ame的图形块第14页/共33页第13页/共33页5.2.2 5.2.2 面向对象的层次结构编辑面向对象的层次结构编辑 图形块的编辑操作增加图素。add(new Line(x0,y0,x1,y1)/增加一条新的直线 选择图素。Select(x,y)在图形块中找出被选择的对象 修改和删除操作第15页/共33页第14页/共33页优点:5.2.35.2.3面向对象的层次结面向对象的层次结构的讨论构的讨论 1)同一层的块结构是相同的,不同层的结构用)同一层的块结构是相同的,不同层的结构用统一的统一的Block来表示,存储、修改、显示、编辑来表示,存储、修改、显示、编辑等可以用统一的方法来处理。等可以用
14、统一的方法来处理。2)采用面向对象的设计,易于扩充,可以很)采用面向对象的设计,易于扩充,可以很方便地支持其他的基本图形元素。方便地支持其他的基本图形元素。3)用过程和数据结合来灵活地表示层次结)用过程和数据结合来灵活地表示层次结构的复杂图形。构的复杂图形。第16页/共33页第15页/共33页5.2.35.2.3面向对象的层次结面向对象的层次结构的讨论构的讨论 由于面向对象的图形层次结构从存储结构上支持图形块的循环嵌套,因此在图形的显示、遍历等操作时有可能陷入死循环。但实际的图形结构是不可能出现循环嵌套的,这就要求在实现将图形块实例插入时,要进行必要的检查,避免出现循环嵌套。下面结合实例给出了
15、一个具体的层次表示第17页/共33页第16页/共33页5.2.35.2.3面向对象的层次结面向对象的层次结构的讨论构的讨论图5.3 逻辑电路5.1的层次表示第18页/共33页第17页/共33页ISO 1986年公布的计算机图形系统标准PHIGS(Programmers Hierarchical Interactive Graphics System)提供实现图形层次结构的结构方法。在PHIGS中,赋于标号的一系列输入图元(包括有关特性)称为结构。5.3 5.3 用结构方法实现层用结构方法实现层次结构次结构第19页/共33页第18页/共33页5.3.1 5.3.1 基本的结构函数基本的结构函数建
16、立一个新的结构的过程openStructure(id);id为整数,将id赋予这个结构作为标号定义图形的属性及绘制图形用closeStructure 关闭这个结构第20页/共33页第19页/共33页实例实例下列程序定义了一个标号为6的绘制多边形的结构。openStructure(6)openStructure(6);setLinetype(lt)setLinetype(lt);setPolylineColorIndex(lc)setPolylineColorIndex(lc);polyline(npolyline(n,pts)pts);closeStructurecloseStructure;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图形 层次 结构
![提示](https://www.deliwenku.com/images/bang_tan.gif)
限制150内