直线的扫描转换.docx_第1页
直线的扫描转换.docx_第2页
直线的扫描转换.docx_第3页
直线的扫描转换.docx_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论