教育学图形学.pptx
《教育学图形学.pptx》由会员分享,可在线阅读,更多相关《教育学图形学.pptx(60页珍藏版)》请在咨信网上搜索。
1、第3章 基本图形 生成算法第3章 基本图形生成算法2024/9/20 周五计算机图形学演示稿 岳俊华制作(C)2 物体的形状和颜色可用象素矩阵或直线线段和多边形填充区域等基本几何结构来描述。点和直线段是最简单的几何成分,其它可供构造图形的输出图元有圆及其它圆锥曲线、二次曲面和多边形填充区域以及字符串等。而二维图形的生成是三维图形生成的基础,研究计算机生成图形需先从二维图形的生成开始。下面将讨论一些基本二维图元生成技术和算法,以光栅图形系统的扫描转换方法为基础。第3章 基本图形生成算法2024/9/20 周五计算机图形学演示稿 岳俊华制作(C)3最基本的图形显示方式是直线方式。实际上,无论什么复
2、杂图形,它们无非是由直线段和曲线段组成。而对于曲线及各种复杂的图形,可以将其离散成许多小直线段,连接各直线来逼近欲生成的曲线或其它复杂图形,所以一般图形都可以看成是由直线段组成。因此,直线段生成的质量好坏与速度快慢将直接影响整个图形生成的质量和速度。在光栅显示器上显示图形是将线段上所有象素点亮的过程。如果已知直线段两个端点,可以有很多种不同的数学方法来决定应改变在两端点之间的那些象素的亮度值才能显示出两点间的直线。在绘图仪上绘直线段,主要决定X、Y方向上的位移量,这些算法之间主要区别是判别和生成x、y增量的过程和方法的不同。第3章 基本图形生成算法2024/9/20 周五计算机图形学演示稿 岳
3、俊华制作(C)41.1.点的生成点的生成 点是图形中最基本的图素,直线、曲线以及其它的图元都是点的集合。在几何学中,一个点既没有大小,也没有维数,点只是表示坐标系统中一个位置。在计算机图形学中,点是用数值坐标来表示的。在直角坐标系中点由(x,y)两个数值组成的坐标表示。在输出设备上输出一个点,就要把应用程序中的坐标信息转换成所用输出设备的相应位置。对于一个CRT监视器来说,输出一个点就是要在指定的屏幕位置上打开电子束,使该位置上的荧光点亮。在PC机中,点亮屏幕上一个点是由BIOS控制完成的,各种程序语言中都有描点语句。例如C语言为putpixel(x,y,color)。第3章 基本图形生成算法
4、2024/9/20 周五计算机图形学演示稿 岳俊华制作(C)5直线是点的集合,在几何学中直线被定义为两个点之间的最短距离。也就是说一条直线是指所有在它上面的点的集合。直线是一维的,即它们具有长度但没有面积。直线可以向一个方向及其相反的方向无限伸长,这不是计算机图形学中所需要的,在图形学中研究的对象是直线段。已知线段的起点坐标(x1,y1),终点坐标(x2,y2),这两点就确定了一条线段。一般来讲,任何图形输出设备都能准确地画出水平线X和垂直线Y,或对角线,但要画出一条准确斜线不是件容易的事。在光栅系统中,线段通过象素绘制,水平和垂直方向的台阶大小受象素的间隔限制。这就是说,必须在离散位置上对线
5、段取样,并且在每个取样位置上决定距线段最近的象素,画一条直线实际上就计算出来一系列与该线靠近的象素。3.1 生成直线的常用算法第3章 基本图形生成算法(0,0)_(5,2)K=0.4(0,0)-(1,0)-(2,1)-(3,1)-(4,2)-(5,2)X=1,y1=y0+k*(x1-x0)=y0+k=0+0.4=0.4Round(y)=round(0.4)=0Y2=y1+k=0.4+0.4=0.8 round(y2)=1第3章 基本图形生成算法均假定所画直线的斜率k0,1。3.1.1 DDA画线算法DDA(Digital Differential Analyzer)画线算法也称数值微分法,是一
6、种增量算法。它的算法实质是用数值方法解微分方程,通过同时对x和y各增加一个小增量,计算下一步的x、y值。第3章 基本图形生成算法已知一条直线段L(P0,P1),其端点坐标为:P0(x0,y0),P1(x1,y1)。可计算出直线的斜率k为:假定端点坐标均为整数,取直线起点P0(x0,y0)作为初始坐标。画线过程从x的左端点x0开始,向x右端点步进,每步x递增1,y递增k(即直线斜率);取像素点(x,round(y)作为当前点的坐标。第3章 基本图形生成算法2024/9/20 周五计算机图形学演示稿 岳俊华制作(C)9DDA直线生成算法的伪语言描述如下:begin if abs(x2x1)abs(
7、y2y1)then lenghtabs(x2x1)else lenghtabs(y2y1)endif x(x2x1)/lenght y(y2y1)/lenght xx1 yy1 k1 while(klenght)putpixel(x,y)xxx yyy kk1 endwhile endDDA方法计算象素位置要比直接使用代数方程快。它利用光栅特性消除了代数方程中的乘法,而在X和Y方向使用合适的增量来逐步沿线段的路径计算各象素位置。但浮点增量的连续迭加中取整误差的积累会使长线段所计算的象素位置偏离实际线段,而且算法中的取整操作和浮点运算仍然十分耗时。第3章 基本图形生成算法2024/9/20 周五
8、计算机图形学演示稿 岳俊华制作(C)10DDA直线绘制的直线绘制的C+实现实现void DDA直线绘制(HDC hdc)int k;double x1=50,y1=50,x2=300,y2=350;double x,y,deltx,delty,length;if(fabs(x2-x1)=fabs(y2-y1)length=fabs(x2-x1);else length=fabs(y2-y1);deltx=(x2-x1)/length;delty=(y2-y1)/length;x=x1;y=y1;k=1;while(k=length)SetPixel(hdc,x,y,RGB(0,0,0);x=x
9、+deltx;y=y+delty;k=k+1;Sleep(50);第3章 基本图形生成算法3.1.2 中点画线算法 假设x坐标为xp的各像素点中,与直线最近者已确定,为P(xp,yp),那么,下一个与直线最近的像素只能是正右方的P1(xp+1,yp),或右上方的P2(xp+1,yp+1)两者之一。令M为P1和P2的中点,易知M的坐标为(xp+1,yp+0.5)。设Q是理想直线与垂直线x=xp+1的交点。显然,若M在Q的下方,则P2离直线近,应取为下一个像素;否则应取P1。第3章 基本图形生成算法令a=y0-y1,b=x1-x0,c=x0y1-x1y0。构造判别式:d=a(xp+1)+b(yp+
10、0.5)+c d的初始值d0=a+0.5b 在d0的情况下,取正右方像素P1,d1=a(xp+2)+b(yp+0.5)+c=d+a-d1=2a在d0的情况下,取右上方像素P2,d2=a(xp+2)+b(yp+1.5)=d+a+b-d2=2(a+b)第3章 基本图形生成算法 由于我们使用的只是d的符号,而且d的增量都是整数,只是其初始值包含小数。因此,我们可以用2d代替d,来摆脱小数。如果进一步把算法中2*a改为a+a等等,那么这个算法不仅只包含整数变量,而且不包含乘除法,适合硬件实现。第3章 基本图形生成算法2024/9/20 周五计算机图形学演示稿 岳俊华制作(C)14 Bresenham直
11、线生成算法是由Bresenham提出的一种精确而有效的光栅线段生成算法,算法的目标是选择表示直线的最佳光栅位置。为此,算法根据直线的斜率确定选择变量在X方向上或在Y方向上每次递增一个单位,另一变量的增量为0或1,它取决于实际直线与最近网格点位置的距离,这一距离称为误差。算法的构思巧妙,使得每次只需检查误差项的符号即可确定所选象素。3.1.3 Bresenham画线算法第3章 基本图形生成算法2024/9/20 周五计算机图形学演示稿 岳俊华制作(C)15 以第一象限的直线为例。假设斜率m在01之间。如下图所示。若通过(0,0)的直线的斜率ml2,它与x1直线的交点离yl直线较y0直线近,光栅点
12、(1,1)比(1,0)更逼近于该直线,因此应该取象素点(1,1)。如果斜率ml2,则应取象素点(1,0)。当斜率ml2时,差值相同,可以任选(1,1)或(1,0)象素点。第3章 基本图形生成算法 过各行各列像素中心构造一组虚拟网格线,按直线从起点到终点的顺序计算直线与各垂直网格线的交点,然后确定该列像素中与此交点最近的像素。由图3-5不难看出:若st,则Si比较靠近理想直线,应选Si;若st,则Ti比较靠近理想直线,应选Ti。第3章 基本图形生成算法令dx=x2-x1,dy=y2-y1递推公式:di的初值:当di0时,选Ti,当di0时,选Si,由于只包含加、减法和左移(乘2)的运算,而且下一
13、个像素点的选择只需检查di的符号,因此Bresenham画线算法很简单,速度也相当快。第3章 基本图形生成算法2024/9/20 周五计算机图形学演示稿 岳俊华制作(C)18 根据上述思想的Bresenham直线生成算法描述如下:begin xx1 yy1 xx2-x1 yy2-y1 my/x e-1/2 for k1 to x putpixel(x,y)eem if(e0)yy1 ee1 endif xx1 next k endfor end此Bresenham算法在计算直线斜率和误差项时要用到浮点算术运算和除法,如果采用整数算术运算和避免除法,可以加快算法的速度。实际上,误差项e的数值大小
14、与算法的执行没有什么关系,相关的只是e的符号,因此作简单变换,即可得到整数算法。第3章 基本图形生成算法2024/9/20 周五计算机图形学演示稿 岳俊华制作(C)19Bresenham算法直线绘制例子:考虑绘制从点(0,0)到(8,4)的线段。初值计算:x=0 y=0 x=8 y=4(循环计算过程部分:e-x for k1 To x putpixel(x,y)ee2y If(e0)yy1 ee2x endif xx1)第3章 基本图形生成算法3.1.4 直线属性基本的线属性是线型、线颜色和线宽度。1线型:对线型的指定包括实线、虚线和点划线等。2线宽:常把图形设备能产生的最小直线宽度认为是1个
15、点宽度,例如1个象素的宽度。以此作为基本线宽,再定义二倍或四倍线宽。线宽的默认值常选取基本线宽。3线色:线颜色由控制RGB监视器中三支电子枪的亮度的RGB分量来给出。第3章 基本图形生成算法3.2 生成圆弧的常用算法3.2.1 圆的特性 圆心位于原点的圆有四条对称轴:x=0,y=0,x=y和x=-y直线。若已知圆弧上一点(x,y),可以得到其关于四条对称轴的其它7个点,这种性质称为八对称性,如下图所示。本节讨论的圆的生成算法均只计算从x=0到x=y分段内(1b区域)的像素点,其余的像素位置利用八对称性即可得出。第3章 基本图形生成算法3.2.2 中点画圆算法 假设x坐标为xp的各像素点中,与该
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教育学 图形学
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。