4-1直线的扫转换.ppt

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2000年3月 第4章 基本图形生成算法 Basic Raster Graphics Algorithms for Drawing 2D Primitives 本章内容 直线的扫描转换 圆与椭圆的扫描转换 区域填充 二维裁剪 字符生成 反走样 图形显示流程图(1) 图形显示流程图(2.1) 输出流水线 扫描转换在图元裁剪前进行 适用于线段及多边形的扫描转换 算法简单 扫描转换在图元裁剪后进行 适用于裁剪区域任意的情况 最常用,节约计算时间 生成图元的所有像素集合存储到临时画布;对于copyPixel,只有裁剪窗口中的内容被写入目标画布中 适用于文本 直线的绘制问题 等价于: 确定该直线所经过的象素点的集合。 给定线段端点 ,并指定线段颜色。确定显示器上应写为该颜色的象素集合。 三种基本的直线扫描转换算法 数值微分法(Digital Differential Analyzer DDA) 也称为基本增量法(Basic Incremental Algorithm) 中点画线法(Midpoint Line Algorithm) Bresenham画线法 数值微分法DDA原理(1) 数值微分法DDA原理(2) 例: DDA算法的特点 算法优点:简单、自然、采用增量计算。 算法缺点:用到了浮点运算,计算效率低。 自变量的选择可根据斜率确定,以得到最佳的直线效果: 中点画线算法(1) 算法的提出: [BRES65] 提出的一种典型算法: 仅用到整数运算 利用了增量运算 适合于直线和圆弧 [PITT67] 对其进行改进,提出中点技术: 后被[VANA84]及其他的研究人员采用 [VANA85] 证明该算法生成的像素集与Bresenham算法结果一致 中点画线法原理(1) 中点画线法原理(2) 中点画线法原理(3) 中点画线法原理(4) 点相对于直线(斜率1时)的位置关系的判别: 记线段所在直线方程为: 中点画线法原理(5) 点/线位置关系的判别计算 中点画线法原理(6) 中点画线法原理(7) 中点画线法原理(8) 中点画线算法伪代码: MidpointLine(x0,y0,x1,y1,color) int x0,y0,x1.y1; unsignlong color; { int x,y,a,b,d,delta1,delta2,step1,step2 ,flag=0; if(|y1-y0|=|x1-x0|){ //|k|=1 x=x0;y=y0;a=y0-y1;b=x1-x0;} else{ //|k|1 x=x1;x1=y1;y1=x;x=y0;y=y0 //x,y,互换 a=x1-x0;b=y0-y1;flag=1} 中点画线算法伪代码(cont.) If(signof(y1-y0)==signof(x1-x0)){ //k0 step1=1;step2=0;d=2a+b;delta1=2a+2b;delta2=2a;} else{step1=0;step2=-1;d=2a-b;delta1=2a;delta2=2a-2b;} if(flag==0) putpixel(x,y,color); else putpixel(y,x,color); while(xx1){ if(d0){x++;y+=step1;d+=delta1;} else{x++;y+=step2;d+=delta2;} if(flag==0)putpixel(x,y,color); else putpixel(y,x,color); } Bresenham画线法(1) Bresenham画线法(2) Bresenham画线法(3) Bresenham画线法(4) Bresenham画线法(5) Bresenham画线法(6) 对比:中点画线/Bresenham画线 小结:三种绘制直线的算法 练习: 考虑判别量的增量计算方法 数值微分法 原理简单,实现方便,但在效率上低于后者。 用到了浮点数运算,不方便硬件实现。 中点画线法 Bresenham画线法 后两种算法都是较为常见的画线算法。对于直线段来说,两种方法是等同的和最有效的。 * Interactive Computer Graphics-交互式计算机图形学 * Application mode Application program Simple Raster Graphics Pac

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档