- 1、本文档共97页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
图形学_期末复习.ppt
2004-2005学年下学期 数据库系统概论 计算机图形学期末复习 直线的扫描转换 直线的扫描转换的任务 确定最佳逼近于该直线的一组象素 按扫描线顺序,对这些象素进行写操作 直线的扫描转换的方法 数值微分(DDA)算法 中点画线法 Bresenham画线算法 DDA算法 中点画线法的思想 中点画线法步骤 1.输入直线的两端点P0(x0,y0)和P1(x1,y1)。 2.计算初始值△x、△y、d=0.5-k、x=x0、y=y0; 3.绘制点(x,y)。判断d的符号; 4.若d0,则(x,y)更新为(x+1,y+1),d更新为d+1-k;否则(x,y)更新为(x+1,y),d更新为d-k。 5.当直线没有画完时,重复步骤3。否则结束 改进算法 改进:因为d只用来做符号判断,用2*△x*d代替d 1.输入直线的两端点P0(x0,y0)和P1(x1,y1)。 2.计算初始值△x、△y、d=△x-2△y、x=x0、y=y0。 3.绘制点(x,y)。判断d的符号。 若d0,则(x,y)更新为(x+1,y+1),d更新为 d+2△x-2△y; 否则(x,y)更新为(x+1,y), d更新为d-2△y。 4.当直线没有画完时,重复步骤3。否则结束。 Bresenham画线算法 如果已经确定(xi,yi)为直线上的一点,那么下一点的坐标为 Bresenham算法步骤 1.输入直线的两端点P0(x0,y0)和P1(x1,y1)。 2.计算初始值△x、△y、d=0、x=x0、y=y0。 3.绘制点(x,y)。 4.d更新为d+k,判断d的符号。若d0.5 ,则(x,y)更新为(x+1,y+1),同时将d更新为d-1;否则(x,y)更新为(x+1,y)。 5.当直线没有画完时,重复步骤3和4。否则结束。 Bresenham算法改进 改进1:令e=d-0.5 e值的变化为: e初=-0.5, 每走一步有e=e+k。 if(y方向上走一步) then e=e-1 Bresenham算法步骤 1.输入直线的两端点P0(x0,y0)和P1(x1,y1)。 2.计算初始值△x、△y、e=-0.5、x=x0、y=y0。 3.绘制点(x,y)。 4.e更新为e+k,判断e的符号。若e0,则(x,y)更新为(x+1,y+1),同时将e更新为e-1;否则(x,y)更新为(x+1,y)。 5.当直线没有画完时,重复步骤3和4。否则结束。 Bresenham算法改进 改进2:用2e△x来替换e e值的变化为: e初=-△x, , 每走一步有e=e+2△y 。 if (y方向上走一步) then e=e-2△x Bresenham改进步骤 1.输入直线的两端点P0(x0,y0)和P1(x1,y1)。 2.计算初始值△x、△y、e=-△x、x=x0、y=y0。 3.绘制点(x,y)。 4.e更新为e+2△y,判断e的符号。若e0,则(x,y)更新为(x+1,y+1),同时将e更新为e-2△x;否则(x,y)更新为(x+1,y)。 5.当直线没有画完时,重复步骤3和4。否则结束。 Bresenham画线法示例 例:用Bresenham画线法P0(0,0) P1(5,2) d=0;k=0.4 xi yi 第一次d 第二次d 0 0 0 0 1 0 0.4 0.4 2 1 0.8 -0.2 3 1 0.2 0.2 4 2 0.6 -0.4 5 2 0 中点画圆法基本思想 P为当前点亮象素,那么,下一个点亮的象素可能是P1(Xp+1,Yp)或P2(Xp +1,Yp -1)。 F(X,Y)=X2 + Y2 - R2 ,有如下结论: F(M) 0则M在圆内- 取P1 F(M)= 0 则M在圆外- 取P2 中点画圆法基本思想 F(X,Y)=X2 + Y2 - R2 ,有如下结论: F(M) 0 -M在圆内- 取P1 F(M)= 0 -M在圆外- 取P2 中点画圆法基本思想 d = F(M) = F(xp + 1, yp - 0.5) =(xp + 1)2 + (yp - 0.5) 2 - R2 若d=0, 则P2(xp + 1, yp – 1) 为下一个象素,那么: d1 = F(xp + 2, yp - 1.5) = d + (2xp + 3)+(-2 yp + 2) 若d0, 则P1(xp + 1, yp ) 为下一个象素,那么: d2 = F(xp + 2, y
文档评论(0)