好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

Bresenham算法-直线光栅化算法.doc

7页
  • 卖家[上传人]:206****923
  • 文档编号:91844706
  • 上传时间:2019-07-02
  • 文档格式:DOC
  • 文档大小:44.02KB
  • / 7 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    •  Bresenham算法是计算机图形学典型的直线光栅化算法· 从另一个角度看直线光栅化显示算法的原理 o 由直线的斜率确定选择在x方向或y方向上每次递增(减)1个单位,另一变量的递增(减)量为0或1,它取决于实际直线与最近光栅网格点的距离,这个距离的最大误差为0.5   · 1)Bresenham的基本原理   o 假定直线斜率k在0~1之间此时,只需考虑x方向每次递增1个单位,决定y方向每次递增0或1 设    直线当前点为(xi,y)    直线当前光栅点为(xi,yi)则    下一个直线的点应为(xi+1,y+k)    下一个直线的光栅点        或为右光栅点(xi+1,yi)(y方向递增量0)        或为右上光栅点(xi+1,yi+1)(y方向递增量1)    记直线与它垂直方向最近的下光栅点的误差为d,有:d=(y+k)–yi,且    0≤d≤1    当d<0.5:下一个象素应取右光栅点(xi+1,yi)    当d≥0.5:下一个象素应取右上光栅点(xi+1,yi+1)如果直线的(起)端点在整数点上,误差项d的初值:d0=0,x坐标每增加1,d的值相应递增直线的斜率值k,即:d=d + k。

      一旦d≥1,就把它减去1,保证d的相对性,且在0-1之间令e=d-0.5,关于d的判别式和初值可简化成:    e的初值e0= -0.5,增量亦为k;    e<0时,取当前象素(xi,yi)的右方象素(xi+1,yi);    e>0时,取当前象素(xi,yi)的右上方象素(xi+1,yi+1);     e=0时,可任取上、下光栅点显示Bresenham算法的构思巧妙:它引入动态误差e,当x方向每次递增1个单位,可根据e的符号决定y方向每次递增 0 或 1    e<0,y方向不递增    e>0,y方向递增1    x方向每次递增1个单位,e = e + k因为e是相对量,所以当e>0时,表明e的计值将进入下一个参考点(上升一个光栅点),此时须:e = e - 1  · 2)Bresenham算法的实施——Rogers 版   o 通过(0,0)的所求直线的斜率大于0.5,它与x=1直线的交点离y=1直线较近,离y=0直线较远,因此取光栅点(1,1)比(1,0)更逼近直线;如果斜率小于0.5,则反之;当斜率等于0.5,没有确定的选择标准,但本算法选择(1,1) (程序)  § //Bresenham's line resterization algorithm for the first octal.//The line end points are (xs,ys) and (xe,ye) assumed not equal.// Round is the integer function.// x,y, ∆x, ∆y are the integer, Error is the real.//initialize variablesx=xsy=ys∆x = xe -xs∆y = ye -ys//initialize e to compensate for a nonzero interceptError =∆y/∆x-0.5//begin the main loopfor i=1 to ∆x    WritePixel (x, y, value)    if (Error ≥0) then        y=y+1        Error = Error -1    end if    x=x+1    Error = Error +∆y/∆xnext ifinish   · 3)整数Bresenham算法   o 上述Bresenham算法在计算直线斜率和误差项时要用到浮点运算和除法,采用整数算术运算和避免除法可以加快算法的速度。

      由于上述Bresenham算法中只用到误差项(初值Error =∆y/∆x-0.5)的符号因此只需作如下的简单变换:    NError = 2*Error*∆x即可得到整数算法,这使本算法便于硬件(固件)实现程序)  § //Bresenham's integer line resterization algorithm for the first octal.//The line end points are (xs,ys) and (xe,ye) assumed not equal. All variables are assumed integer.//initialize variablesx=xsy=ys∆x = xe -xs∆y = ye -ys//initialize e to compensate for a nonzero interceptNError =2*∆y-∆x                 //Error =∆y/∆x-0.5//begin the main loopfor i=1 to ∆x    WritePixel (x, y)    if (NError >=0) then        y=y+1        NError = NError –2*∆x  //Error = Error -1    end if    x=x+1    NError = NError +2*∆y       //Error = Error +∆y/∆xnext ifinish   · 4)一般Bresenham算法   o 要使第一个八卦的Bresenham算法适用于一般直线,只需对以下2点作出改造:当直线的斜率|k|>1时,改成y的增量总是1,再用Bresenham误差判别式确定x变量是否需要增加1;x或y的增量可能是“+1”或“-1”,视直线所在的象限决定。

      程序)  § //Bresenham's integer line resterization algorithm for all quadrnts//The line end points are (xs,ys) and (xe,ye) assumed not equal. All variables are assumed integer.//initialize variablesx=xsy=ys∆x = abs(xe -xs)        //∆x = xe -xs∆y = abs(ye -ys)        //∆y = ye -yssx = isign(xe -xs)sy = isign(ye -ys)//Swap ∆x and ∆y depending on the slope of the line.if ∆y>∆x then    Swap(∆x,∆y)    Flag=1else    Flag=0end if//initialize the error term to compensate for a nonezero interceptNError =2*∆y-∆x//begin the main loopfor i=1 to ∆x    WritePixel(x, y , value)    if (Nerror>=0) then        if (Flag) then     //∆y>∆x,Y=Y+1            x=x+sx        else            y=y+sy        end if             // End of Flag        NError = NError –2*∆x    end if                 // End of Nerror     if (Flag) then        //∆y>∆x,X=X+1        y=y+sy    else        x=x+sx    end if    NError = NError +2*∆ynext ifinish   · 例子 o。

      点击阅读更多内容
      相关文档
      初高中杜绝校园霸凌(欺凌)主题班会:不作揉纸团的人.pptx 川教版七年级上册生命生态安全教学课件:第12课 生命的诞生.pptx 川教版七年级上册生命生态安全教学课件:第1课 奇妙的生命世界.pptx 川教版七年级上册生命生态安全教学课件:第2课 珍爱生命.pptx 川教版七年级上册生命生态安全教学课件:第8课 自己的事情自己做.pptx 多元性、歧视和骚扰集体谈判协议.docx 2024新版2025秋人教版音乐二年级上册第三单元第2课 洋娃娃和小熊跳舞教案教学设计.docx 川教版七年级上册生命生态安全教学课件:第4课 适应学校新生活.pptx 在公司班子成员2025年度“一岗双责”集体谈话会上的讲话.docx 天然气站安全管理制度汇总.doc 川教版七年级上册生命生态安全教学课件: 第11课 多彩的青春.pptx 川教版七年级上册生命生态安全教学课件:第14课 青春期交往.pptx 建筑工程在建项目每周安全检查记录表.doc “厂中厂”租赁企业安全风险评估报告.docx 川教版七年级上册生命生态安全教学课件:第10课 走进青春期.pptx 川教版七年级上册生命生态安全教学课件:第7课 提高学习效率的秘诀.pptx 学校课堂教学评价标准及教学设计评价标准.docx 2025-2026学年度九年级数学上册一元二次方程提优卷100题【含答案】.docx 辽宁省2026年高职单招语文复习资料.doc 初中生物模拟真题及答案.doc
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.