- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Bresenham算法是计算机图形学典型的直线光栅化算法。 从另一个角度看直线光栅化显示算法的原理 由直线的斜率确定选择在x方向或y方向上每次递增(减)1个单位,另一变量的递增(减)量为0或1,它取决于实际直线与最近光栅网格点的距离,这个距离的最大误差为0.5。 1) Bresenham的基本原理 假定直线斜率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??? 当d0.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;??? e0时,取当前象素(xi,yi)的右方象素(xi+1,yi);??? e0时,取当前象素(xi,yi)的右上方象素(xi+1,yi+1); ??? e=0时,可任取上、下光栅点显示。 Bresenham算法的构思巧妙:它引入动态误差e,当x方向每次递增1个单位,可根据e的符号决定y方向每次递增 0 或 1。 ??? e0,y方向不递增??? e0,y方向递增1??? x方向每次递增1个单位,e = e + k 因为e是相对量,所以当e0时,表明e的计值将进入下一个参考点(上升一个光栅点),此时须:e = e - 1 2) Bresenham算法的实施——Rogers 版 通过(0,0)的所求直线的斜率大于0.5,它与x=1直线的交点离y=1直线较近,离y=0直线较远,因此取光栅点(1,1)比(1,0)更逼近直线;如果斜率小于0.5,则反之;当斜率等于0.5,没有确定的选择标准,但本算法选择(1,1) ( 程序) //Bresenhams 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算法 上述Bresenham算法在计算直线斜率和误差项时要用到浮点运算和除法,采用整数算术运算和避免除法可以加快算法的速度。 由于上述Bresenham算法中只用到误差项(初值Error =?y/?x-0.5)的符号 因此只需作如下的简单变换: ??? NError = 2*Error*?x 即可得到整数算法,这使本算法便于硬件(固件)实现。 ( 程序) //Bresenhams 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 = x
您可能关注的文档
最近下载
- 四年级上道德与法治《学会识别广告》教学设计.pdf VIP
- 2024融合大语言模型DeepSeek技术新人教版语文七年级上册《第四单元》大单元整体教学设计[2022课标].pdf
- 监控系统项目完整技术标书.docx VIP
- 临床合理用药解读-质子泵抑制剂的处方和医嘱审核要点解读(PPT课件).pptx VIP
- 山东省化工装置安全试车工作规范 DB37_T 1854—2020 山东.pdf VIP
- 安徽—夏凯月—课件—直线的倾斜角与斜率.pptx VIP
- 房屋租赁合同,房屋租赁合同,房屋租赁合同.docx VIP
- 安徽—夏凯月—设计—直线的倾斜角与斜率.docx VIP
- 业务学习-子宫脱垂.pptx VIP
- 海尔风冷模块样册.pdf
文档评论(0)