第一章 基本图形的生成-1.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第一章 基本图形的生成-1

第一章 基本图形的生成;基本图形的生成;基本图形的生成;基本图形的生成;1.1 直线;1.1 直线;1.1 直线;1.1.1 数值微分(DDA)法;1.1.1 数值微分(DDA)法;1.1.1 数值微分(DDA)法;1.1.1 数值微分(DDA)法;1.1.1 数值微分(DDA)法;1.1.1 数值微分(DDA)法;1.1.1 数值微分(DDA)法;1.1.1 数值微分(DDA)法;1.1.2 中点画线法;M;构造递推公式: 分两种情形考虑再一下个象素的判定: 1)若d≥0,中点M在直线上方,取正右方象素P1 (xp+1, yp) 再下一个象素的判别式为: d1=F((xp+1)+1, yp+0.5)=a(xp+2)+b(yp+0.5)+c = d+a d的增量为a 2)若d<0,中点M在直线下方,取右上方象素P2 (xp+1, yp+1) 再下一个象素的判别式为: d2=F((xp+1)+1,(yp+1)+0.5)= a(xp+2)+b(yp+1.5)+c =d+a+b d的增量为a+b;d的初始值 d0=F(x1+1,y1+0.5) =F(x1,y1)+a+0.5 =a+0.5b 用2d代替d后,d0=2a+b d的增量都是整数 优点: 只有整数运算,不含乘除法 可用硬件实现;void MidPointLine(int x1, int y1, int x2, int y2) { float a, b, d1, d2, x, y, d; a=y1-y2; b=x2-x1; d=2*a+b; d1=2*a; d2=2*(a+b); x=x1; y=y1; setpixel(x,y,c); /*c为颜色值*/ while(xx2) { if(d0) {x++; y++; d+=d2;} else {x++; d+=d1;} setpixel(x,y,c); } };1.1.3 Bresenham画线算法;1.1.3 Bresenham画线算法;误差项的计算 d初=0, 每走一步:d=d+k 一旦y方向上走了一步,d=d-1;算法步骤: 1.输入直线的两端点P1(x1,y1)和P2(x2,y2)。 2.计算初始值△x、△y、d=0、x=x1、y=y1。 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。否则结束。;改进1:令e=d-0.5;算法步骤: 1.输入直线的两端点P1(x1,y1)和P2(x2,y2) 。 2.计算初始值△x、△y、e=-0.5、x=x1、y=y1。 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。否则结束。;改进2:用2e△x来替换e e初=-△x, 每走一步有e=e+2△y。 如果 (e0) 则 e=e-2△x;算法步骤: 1.输入直线的两端点P1(x1,y1)和P2(x2,y2) 。 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。否则结束。;1.1.3 Bresenham画线算法;1.1.3 Bresenham画线算法;1.1.3 Bresenham画线算法;思考题;1.2 圆;1.2 圆;1.2 圆;1.2.1 中点画圆法;1.2.1 中点画圆法;算法步骤: 1.输入圆的半径R。 2.计算初始值d=1.25-R、x=0、y=R。 3.绘制点(x,y)及其在八分圆中的另外七个对称点。 4.判断d的符号。若d≤0,则先将d更新为d+2x+3,再将(x,y)更新为(x+1,y);否则先将d更新为d+2(x-y)+5,再将(x,y)更新为(x+1,y-1)。 5.当xy时,重复步骤3和4。否则结束。;优化改进:用d-0.25代替d 算法步骤: 1.输入圆的半径R。 2.计算初始值d=1-R、x=0、y=R。 3.绘制点(x,y)及其在八分圆中的另外七个对称点。 4.判断d的符号。若d≤0,则先将d更新

文档评论(0)

f8r9t5c + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档