电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

直线的扫描转换VIP免费

直线的扫描转换_第1页
1/4
直线的扫描转换_第2页
2/4
直线的扫描转换_第3页
3/4
直线的扫描转换摘要:二维图形在显示输出之前需要进行两个重要的处理步骤,一是图形的扫描转换,二是剪裁。而所谓图形的扫描转换就是在光栅显示器等数字设备上确定一个最佳逼近于图形的像素集,而从图元的参数表示形式(连续表示)转换成点阵表示形式(光栅显示系统刷新时需要的表示形式)的过程。本文重点介绍有关直线段的扫描转换的两种算法:中点算法,Bresenham算法。关键词:中点算法,Bresenham算法。1.算法背景:所谓扫描转换直线段就是计算出落在直线段上或充分靠近它的一串像素,并以此像素集近似代替原连续直线段在屏幕上显示的过程。直线段的宽度为一个像素宽,为了方便,将像素的几何形状看做是中心为网格点(x,y)的圆点,且相互不重叠。2.算法:2.1中点算法:2.1.1算法推演:假设当前像素点为,(0《k《1)。所以当x方向上加1,y方向或加1,或加0.下一个像素点有两个选择点或。若为和之中点,Q为直线与垂线的交点,当M在Q的下方,说明离直线近,应为下一个像素点;当M在Q的上方,则为下一点。设直线方程,将M坐标带入方程,构造判式:当d<0时,M在Q下方,取;当d>0时,M在Q上方,取;当d=0时,M在直线上,取。所以再计算判别式的递推公式:当d<0,下一个像素取取;;此时d的增量为a+b。当时,下一个像素取,此时d的增量为a。其中:,由于我们只关心d的符号,只用d的符号作判断,为了只包含整数运算,可以用2d代替d来摆脱小数,提高效率。下面计算d的初值,设像素,2.1.2算法描述:1)输入直线两端点和;2)计算初值,,,3)绘制点(x,y).判断d的符号:若d<0,则(x,y)更新为(x+1,y+1),d更新为:。否则(x,y)更新为(x+1,y),d更新为。2.2Bresenham算法2.2.1算法推演:设直线方程为,(k为直线斜率)。下一个像素的横坐标为,而纵坐标要么为,要么为。d的初值,x每增加1,d的值增加k,即。纵坐标是否增加1取决于d的值。1)当,就减掉1,保证d在0,1之间。当,直线与垂线交点M最接近于当前像素的右上方像素.2)当时,交点M最接近像素。为方便计算,使e=d-0.5,e的初值是-0.5,增量为k。当时,下一个像素取;当,下一个像素取。即:当0<<0.5,=,当0.5<<1,=+1,2.2.2算法改进:在上述算法中计算斜率与误差时用到小数和除法,可以用整数以避免除法。由于算法只用到误差的符号可做替换:2*e*dx。总结:直线段的三种扫描算法:DDA算法,中点算法,Bresenham算法。DDA算法原理简单,实现容易,但是采用浮点数运算影响效率,而中点算法和Bresenham算法比较常见。本文讨论的是斜率0<k<1的情况下直线的扫描,应该改进到普遍情况下,这还需要做更多的工作。由于自己的编程能力有限,导致很多问题都得不到解决,一直运行不出结果,还要在编程方面花更多的精力。

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

直线的扫描转换

起跑线书城+ 关注
实名认证
内容提供者

热爱教学事业,对互联网知识分享很感兴趣

相关文档

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部