第3章-基本光栅图形算法课题.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
void pnarc(Graphics g, int radius) { int x, y, f; x=0; y=0+radius; f=0; while(y0) { g.drawLine(x, y, x, y); if(f0) { f=f-2*y+1; y--; } else { f=f+2*x+1; x++; } } if(y==0) g.drawLine(x, y, x, y); } -5/3 5 5 AEL e0 e5 4 2 14 AEL在y=3扫描线上的状态 -5/3 5 3 AEL e0 e5 4 2 16 AEL在y=4扫描线上的状态 -5/3 5 2 AEL e0 e4 9 2 16 AEL在y=5扫描线上的状态 … 5 4 因为对于e5,y的 max已经到了, 故去掉e5,而 从NEL表中加入e4 3.4.3 边缘填充算法 1、特点:采用对图像进行逐位求反的方法,免去对边排序 的工作量。 2、预备知识: 对颜色M作偶数次求反运算,其结果还是M,而对M作奇数次 求反运算的结果是M的反M 。在光栅图形中,如某区域已着 上值为M的某种颜色,则上述求反运算得到的结果是:对区 域作偶数次求反运算后,该区域的颜色不变;作奇数次求反 运算后,该区域的颜色则变成值为反M的颜色。 3、边缘填充算法的实现 实现:对多边形P的每一非水平边上的各像素做向右求反运算 即可,见下图,其中(a)为给定的多边形;(b)为对区域赋初值;(c),(d),(e)和(f)表示逐边向右求反。 3.4.4 边界标志算法 1、基本原理:首先用一种特殊的颜色在帧缓冲器中将多边形 的边界(水平边的部分边界除外)勾画出来。然后再把位于多 边形内的各个像素着上所需的颜色。 2、算法具体实现步骤: 步骤1:以值为boundary-color 的特殊颜色勾画多边形P的边界。设多边形顶点为Pi= (xi, yi),0≤i≤n, xi, yi均为整数;置Pn+1=P0。每一条扫描线上着上这种特殊颜色的点的个数必定是偶数(包括零)。 3、边界标志算法实例 标志边界并处理奇点 P2(9,6) P0(2,5) P1(2,11) P3(15,9) P4(15,3) P5(12,1) P6(7,1) for(i=0;i=n;i++){ dy=p[i+1].y-p[i].y; dx=(p[i+1].x-p[i].x)/dy; if(dy0)x=p[i].x;else x=p[i+1].x; ymax=(Math.max(p[i].y,p[i+1].y)); ymin=(Math.min(p[i].y,p[i+1].y)); for (y=ymin+1;y=ymax ;y++ ) { x=(int)(x+dx+.5); if(pixels[y*w+x]==blue) pixels[y*w+x+1]=blue; else pixels[y*w+x]=blue; }} // for(i=0;i=n;i++) 确定某条边的上下端点 水平边不考虑 多边形的边数 边界颜色-蓝色 P0P1的底端点ymin P0P1的上端点ymax X X X X X X P1P2的底端点ymin X X X X X X X X X X X X X X X X X X X X ImageProducer ip = new MemoryImageSource(w,h,pixels,0,w); //通过MemoryImageSource将数组中的像素产生一个图像,w,h分别表其宽度和高度 image = createImage(ip); 3.4.4 边界标志算法 1、基本原理:首先用一种特殊的颜色在帧缓冲器中将多边形 的边界(水平边的部分边界除外)勾画出来。然后再把位于多 边形内的各个像素着上所需的颜色。 2、算法具体实现步骤: 步骤1:以值为boundary-color 的特殊颜色勾画多边形P的边界。设多边形顶点为Pi= (xi, yi),0≤i≤n, xi, yi均为整数;置Pn+1=P0。每一条扫描线上着上这种特殊颜色的点的个数必定是偶数(包括零)。 步骤2:设in_flag是一布尔变量。对每一条扫描线从左到右进行搜索,如果当前是像素位于多边形P内,则in_flag=true,需要填上值为polygon_color的颜色;否则该像素在多边形P外,需要填上值为background_color的颜色。 3.3.3 圆弧的多边形逼近法 1、基本思想:将整个圆弧等分成一

文档评论(0)

a5522235 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档