Lecture02-LineDrawing 计算机图形学ppt课件.ppt

  1. 1、本文档共55页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Lecture02-LineDrawing 计算机图形学ppt课件

What will we to do? 2.1.3 Bresenham算法 直线生成的算法中最有效的算法之一。 y k+1– y k is 0 or 1, denpending on the sign of parameter pk. At starting position( x0 , y0 ), the first parameter p0 = 2?y – ?x。 We can summarize Bresenham line drawing for a line with a positive slope less than 1 in the following listed steps. 1.Input the two line endpoints and store the left endpoint in ( x0 , y0 ). 2.Load ( x0 , y0 ) into the frame buffer; that is, plot the first point. 3.Calculate constants ?x, ?y, 2?y and 2?y – 2?x, and obtain the starting value for the decision parameter as p0= 2?y - ?x. 4.At each xk along the line, starting at k=0,perform the following test: if pk0, the next point to plot is (xk+1, yk) and pk+1= pk+ 2?y Otherwise, the next point to plot is (xk+1, yk+ 1 )and pk+1= pk+ 2?y – 2?x 5.Repeat step 4 ?x times. 程序如下: void BresenhamLine(xa,ya,xb,yb1) { int dx=abs(xa-xb),dy=abs(ya-yb); int p=2*dy-dx; int twoDy=2*dy,twoDyDx=2*(dy-dx); int x,y,xEnd; /*Determine which point to use as start, which as end*/ if (xaxb){x=xa;y=yb;xEnd=xb;}setPixel(x,y); while(xxEnd){x++; if (p0) p+=twoDy; else{ y++; p+=twoDyDx;} setPixel(x,y); } } Midpoint Example Draw a line from (1, 2) to (5, 5) dx = x1 – x0; dy = y1 – y0; d = 2 * dy – dx; // d = F(m) = F(x0, y0+1/2) Einc = 2 * dy ; NEinc = 2 * (dy – dx); x = x0; y = y0; Draw (x, y); While (x x1) { if (d = 0) d = d + Einc; x = x + 1; else d = d + NEinc x = x + 1; y = y + 1; Draw (x, y); } 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 dx dy Einc NEinc d x y 4 3 2 Midpoint Example Draw a line fr

文档评论(0)

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

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

1亿VIP精品文档

相关文档