您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 西安电子科技大学《计算机图像显示技术》第10讲 图形显示软件(1)
计算机图形显示技术主讲徐青西安电子科技大学雷达信号处理国防科技重点实验室2图形显示软件•图形软件的地位•图形软件的分类•常用术语•图形软件开发方法•直线的生成算法逐点比较法数值微分法3图形显示软件——概述•图形软件的地位4图形显示软件——概述图形软件的地位•计算机图形系统是计算机硬件(包括中央处理机、图形输入输出设备),以及软件(包括系统软件和图形软件)的集合。•图形软件是图形系统的一个重要环节,在很大程度上决定着整个系统的功能速度和适应能力。5图形显示软件——概述图形软件的地位•计算机图形系统是由计算机硬件、计算机系统软件、图形软件和图形设备组成的集合。硬件系统操作系统基础软件图形软件系统6图形显示软件——概述图形软件的作用与分类图形软件的作用或任务主要体现在三个方面:1、驱动程序:•对图形输入输出设备进行驱动和控制,完成基本的图形输入输出功能。•这部分程序通常称作设备驱动程序,通常用汇编语言编写,由制造厂商提供,大多固化在图形设备上。•例如打印机控制程序、微机显示卡的BIOS和驱动程序。7图形显示软件——概述图形软件的作用与分类2、通用软件包•依据不同设备的性能和特点,努力达到最佳的图形输入输出效果(高速、逼真),一般通过建立通用的图形编程软件包来实现。•有时通过扩充现有高级语言的图形语句也可以达到同样的目的,但可移植性较差,因而很少采用。8图形显示软件——概述图形软件的作用与分类2、通用软件包•通用图形软件包起着承上启下的作用。•它利用设备驱动程序加以整合、提高和概括,提供包括图形输出、输入、属性、变换、观察(裁剪)以及通用控制等各类子程序,涵盖建立和管理图形所需的各种功能,为应用软件包的开发提供有力的支持。9图形显示软件——概述图形软件的作用与分类3、应用软件包•通过人机交互方式,在操作者的控制下,完成所需的图形应用程序。•它所需要的是供非专业人员使用的成套的图形应用软件包,如CAD软件包、医学图像诊断软件包等。•良好的人机界面和系统综合性能是图形应用软件首要考虑的因素。10图形显示软件——概述常用术语图元•图元又称输出图元(OutputPrimitive),是组成图形的基本成分的总称。•包括字符串和点、直线段、圆、曲线、填充区域等几何成分。•生成输出图元的子程序是构造图形的基本工具。11图形显示软件——概述常用术语属性•属性(Arrtibute)是指输出图元的特性,它描述了一个特定图元是怎么被显示的。•常用属性包括亮度、色彩、线型、文本类型和区域填充模式等。•通用图形软件包里的子程序可用来为单个图元或成组的图元设置属性。12图形显示软件——概述常用术语结构(图段)、对象•多个具有一定逻辑关系的图元构成结构(Structure)或图段(Segment)。•一个相对独立的图形单元成为一个对象(Object)。•可对结构等执行有关的操作,如建立、修改和变换等。13图形显示软件——概述常用术语坐标系•坐标系即设计和描述图形时所采用的参照系,用来说明图形对象的相对位置、大小和方向。•在图形设计中,最常采用的是笛卡尔坐标系,但需要针对不同的场合使用不同的尺度和量纲。14图形显示软件——概述常用术语坐标系•构造单个物体时,采用相应的建模坐标系或局部坐标系;单个形状一旦被指定,则可采用一参考坐标系,称为世界坐标系,将该物体放入场景的适当位置;最后,将该场景的世界坐标描述变换到与输出设备对应的设备坐标系来输出或显示。15图形显示软件——概述常用术语坐标系设备坐标系分两种:•规范化设备坐标系:独立于任何特定的设备,坐标取值范围固定为0~1;•特定设备坐标系:必须与输出设备的尺寸和分辨率等相适应。对视频监视器而言,屏幕坐标系满足:max0XXdcmax0YYdc16图形显示软件——概述常用术语•几何变换(GeometicTransformation)是指改变场景中一个图形对象的大小、位置或方向。•建模变换(ModelingTransformation)是利用按建模坐标给出的对象描述来构成场景。•观察变换(ViewingTransformation)是用来制定一种观察和视图在输出显示区域出现的范围。17图形显示软件——概述图形软件的开发方法目的•一个良好的图形应用软件,应该具备所需的图形功能、友好的人机界面和良好的程序结构。•在开发阶段便于设计和调试,在使用时易学易用,便于维护和移植。18图形显示软件——概述图形软件的开发方法1、子程序包•以现有的高级语言为基础,扩充处理图形的子程序包•目前已有GKS、PHIGS、GL等多种图形标准化程序包可供使用,开发者只需按规则调用所需的子程序,便可完成图形的显示、绘制和各种图形设备的控制以及人机交互等•这种方式在实际中使用得较多,所开发的软件便于移植和推广,但执行速度较慢19图形显示软件——概述图形软件的开发方法,主要采用以下三种方式:2、高级语言•选定一种高级语言,在处理图形的语句和数据类型等方面进行扩充。•目前普遍使用的C、VB、VC等高级语言已经在图形生成及控制方面进行了扩充,以具备较强的图形处理功能。•适用于中、小型应用软件的开发,所开发的软件比较简练、紧凑、执行速度较快,缺点是可移植性较差。20图形显示软件——概述图形软件的开发方法3、专用的高级图形语言•针对特定的设备配置,设计专用的高级图形语言,可以达到最佳的效果。•与简单的命令语言相比,它的功能更强。•与子程序包相比,它的执行速度更快,效率更高。•这种方式的缺点是系统开发量大,难以移植,主要用于专用图形系统的开发。21图形显示软件——概述直线的生成算法•在数学上,理想的直线是一条由无穷多个无限小的连续的点组成。22图形显示软件——概述直线的生成算法•但在光栅显示平面上,我们只能用二维光栅格网上尽可能靠近这条直线的像素点的集合来表示它•每个像素具有一定的尺寸,是显示平面上可被访问的最小单位,它的坐标x和y只能是整数,也就是说相邻像素的坐标值是阶跃的而不是连续的23图形显示软件——概述直线的生成算法•直线的扫描转换,就是要找出显示平面上最佳逼近理想直线的那些像素的坐标值,并将这些像素置成所要求的颜色。24图形显示软件——概述直线的生成算法•由于一幅图中可能包含成千上万条直线,所以要求绘制算法应该:1、最接近数学上的直线2、沿着线段分布的像素应均匀3、画线速度尽可能的快25图形显示软件——概述•像素不均匀的例子如右图所示,对同样长的线段,如果进行图中的扫描转换,就会因为斜率的不同,产生的像素个数不相等,这样将导致像素亮度分布不均匀。26图形显示软件——概述直线的生成算法——逐点比较法•逐点比较法就是在绘图的过程中,绘图笔每走一步就与规定图形进行偏差比较,然后决定下一步的走向。•如此重复,用步步逼近理想线条的方法画出规定的图形。27图形显示软件——概述逐点比较法的执行过程开始偏差判别画笔走步偏差计算终点判断(N)(Y)结束28图形显示软件——概述直线的生成算法——逐点比较法•偏差判别:判断画笔的当前位置与规定图形位置之间的偏差,以确定画笔下一步的走步方向•画笔走步:画笔在X或Y向走一步•终点判断:判断画笔的当前位置是否是规定图形的终点•偏差计算:计算画笔在当前位置上与规定图形之间的偏差29图形显示软件——概述直线的生成算法——逐点比较法•在用逐点法生成直线的过程中,要对处于不同位置的直线和画笔,规定一个合理的走笔方向,并讨论偏差的计算方法。30图形显示软件——概述直线的生成算法——逐点比较法1)走向规定:把直线的起点设置在坐标系的原点,根据画笔当前位置,规定它的下一步走向如右图342131图形显示软件——概述直线的生成算法——逐点比较法2)偏差计算规则:•以所画直线的斜率作为计算偏差的原始参数•偏差值:=tg-tg•(P:笔当前位置)A(xa,ya)P(xp,yp)32图形显示软件——概述直线的生成算法——逐点比较法3)第一象限的偏差计算=tg-tg=yp/xp-ya/xa=(xayp-xpya)/xpxa0笔当前位置在直线下方,应该向+Y方向走一步0笔当前位置在直线上方,应该向+X方向走一步因为xpxa0,故判断的正负只需判断xayp-xpya因此偏差:F=xayp-xpya33图形显示软件——概述直线的生成算法——逐点比较法4)用递推法简化偏差计算•设笔的当前位置为P1,若F1=y1•xa–ya•x10(*)•应走+Y一步,假设到达P2,则x2=x1y2=y1+1•则在P2处的偏差应为F2=y2•xa–ya•x2=y1•xa–ya•x1+xa=F1+xa(x2,y2)(x1,y1)P1P2(xa,ya)A34图形显示软件——概述直线的生成算法——逐点比较法4)用递推法简化偏差计算•否则应走+X一步,则下一个点为x2=x1+1y2=y1•则在P2处的偏差应为F2=y2•xa–ya•x2=y1•xa–ya•x1-ya=F1-ya35图形显示软件——概述直线的生成算法——逐点比较法4)用递推法简化偏差计算•根据以上的推导,只要知道F1,就可以连续推得F2、F3,并根据它们的符号确定画笔下一步的走步方向•初始条件我们设画笔在直线段的起点,此时F1=0•于是可归纳得:•Fi≥0走+X一步,新偏差Fi+1=Fi–ya•Fi0走+Y一步,新偏差Fi+1=Fi+xa36图形显示软件——概述直线的生成算法——逐点比较法4)用递推法简化偏差计算•F0,走+Y一步F=F+xa•F≥0,走+X一步F=F-ya(x2,y2)(x1,y1)P3P1P2(x3,y3)(xa,ya)A37图形显示软件——概述直线的生成算法——逐点比较法5)其他象限的偏差计算公式就不再一一推导,过程是类似的,在此仅给出结果:象限F≥0F0走向偏差计算走向偏差计算1+XF=F-|ya|+YF=F+|xa|3-X-Y2+YF=F-|xa|-XF=F+|ya|4-Y+X38图形显示软件——概述直线的生成算法——逐点比较法6)终点判断•设置一个计数器,记录下画笔应走的总步数:N=X/S+Y/S其中:X:直线段在X向的增量(X=|xa|)Y:直线段在Y向的增量(Y=|ya|)S:绘图机步长•故终点判断为N=(|xa|+|ya|)/S;•任何方向走一步后,N=N-1;直至N=039图形显示软件——概述直线的生成算法——逐点比较法根据以上分析,可以总结为:1、输入直线段的始点(x0,y0)和终点(x1,y1),计算xa=x1-x0和ya=y1-y02、选定第一点为(x0,y0)并为Fk赋初值,即令x=x0,ya=y0,Fk=03、显示当前光点(x,y)4、根据Fk是否小于0,分别按递推公式计算Fk+15、根据Fk+1的符号和当前光点所处的象限,选定下一光点的走向和坐标(x,y)6、重复上述第3-5步,总的迭代次数为N=|x1-x0|+|y1-y0|40图形显示软件——概述直线的生成算法——逐点比较法画出直线段(0,0)~(5,3)-101234567-10123456741图形显示软件——概述直线的生成算法——数值微分法算法描述•数值微分法即DDA法(DigitalDifferentialAnalyzer),是一种基于直线的微分方程来生成直线的方法。•它的算法实质是用数值方法解微分方程,通过同时对x和y各增加一个小增量,计算下一步的x、y值•简单的DDA法在直线的最大增量方向每次变化1,另一个方向则相应地每次变化一个小于1的值,逐个计算出最接近于理想直线的光点的坐标。42图形显示软件——概述直线的生成算法——数值微分法算法描述•设(x1,y1)和(x2,y2)分别为所求直线的起点和终点坐标,由直线的微分方程得:yxxxyydxdym121243图形显示软件——概述直线的生成算法——数值微分法算法描述•可通过计算由x方向的增量△x引起y的改变来生成直线:xi+1=xi+△x(10-1)yi+1=yi+△y=yi+△x·m(10-2)44图形显示软件——概述直线的生成算法——数值微分法算法描述•也可通过计算由
本文标题:西安电子科技大学《计算机图像显示技术》第10讲 图形显示软件(1)
链接地址:https://www.777doc.com/doc-79225 .html