三章输出图元.pptVIP

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

第三章 输出图元 Output Primitives 图形输出的概念 算法:几何图形 点阵设备与 画线设备 点阵设备:显示器光栅矩阵(XY) ,如何生成 划线设备:笔式绘图机 坐标系 世界坐标系 设备坐标系 本章主要介绍 二维图元的算法 点 直线 圆 曲线 填充域 增量法 y=mx+b m为斜率,b为截距,设二端点分别为(x1,y1),( x2,y2) ?y=y2- y1 , ?x =x2-x1 m= ?y/ ?x 对于任意的δy, δy=mδx 则δx=δy/m 讨论:︱m︱1 由δx定δy的偏转电压 ︱m︱1 由δy定δx的偏转电压 DDA算法 Digital Differential Analyzer y=mx+b m为斜率,b为截距,设二端点分别为(x1,y1),( x2,y2) ?y=m ?x 若0m≤1,设?x=1,则 xk+1=xk+1, yk+1=yk+m (取整) 若m1,设?y=1,则 yk+1=yk+1 xk+1=xk+1/m, 以上推导是基于自左向右划线,若自右向左划线, 若0m≤1可设?x=-1 yk+1=yk-m 若m1, ?y=-1, xk+1=xk-1/m, 若m0,分 |m|1 和|m|1 两种情况讨论之。 程序示例 中点划线算法 线段二端点(x0,y0),(x1,y1);m1,P(xp,yp)已定 M为p1,p2的中点;M(xp+1,yp+0.5) M在Q的下方,应取 P2 (xp+1,yp+1) M在Q的上方,应取 P1 (xp+1,yp) 考查一次函数F(x,y)=ax+by+c a=y0-y1 b=x1-x0,c=x0y1-x1y0 对任一点(x,y),若 F(x,y)=0,点(x,y)在直线上; F(x,y)0,点(x,y)在直线上方; F(x,y)0,点(x,y)在直线下方; 令d=F(M)=a(xp+1)+b(yp+0.5)+c d0,M在直线的下方,取P2点 (只与d的符号有关) d0,M在直线的上方,取P1点 中点划线算法(续) 求d的增量 若取P1点,d1=F(xp+2,yp+0.5)=a(xp+2)+b(yp+0.5)+c=d+a 若取P2点,d2=F(xp+2,yp+1.5)=a(xp+2)+b(yp+1.5)+c=d+a+b 初始时: d0=F(x0+1,y0+0.5)=F(x0 , y0)+a+0.5b=a+0.5b 以2d代d,算法: d0=2*a+b di≧0 (取P1), xi+1=xi+1, yi+1=yi, di+1=di+2a di0 (取P2), xi+1=xi+1, yi+1=yi+1, di+1=di+2(a+b) 重复2,直到xi+1≧x1. 斜率|m|1,1……中点取法 例题P1 (0,0) P2 (5,2) 中点画圆算法 圆的特征 (x-xc)2+(y-yc)2 =r2 直接计算,计算量大,点间距不一致 圆的八对称性 考虑点(0,r)右下方的1/8圆周 中点圆算法 算法思想: f(x,y)=x2+y2-r2 M(xk+1,yk-0.5) pk =f(M)=f(xk+1,yk-0.5)= (xk+1)2+(yk-0.5)2- r2 pk+1=f(xk+1+1,yk+1-0.5)= (xk+1+1)2+(yk+1-0.5)2 -r2 =pk+2(xk+1)+(yk+12- yk2)- (yk+1- yk)+1 if (pk0) yk+1=yk xk+1=xk+1 pk+1= pk+2(xk+1)+1= pk+2xk+1+1 if (pk=0) yk+1= yk-1 xk+1=xk+1 pk+1=pk+2xk+1+1-2yk+1 =pk+2xk+1 -2yk+1 +1 ( 2xk+1= 2xk+2; 2yk+1= 2yk- 2) p0=f(1,r-0.5)=1+(r-0.5)2-r2=1.25-r = 1-r (if r is an integer) 中点画圆算法步骤 输入(xc,yc),r, 画第一个点(0,r), p0=1-r if (pk0) yk+1=yk xk+1=xk+1 pk+1=pk+2xk+1+1 if (pk=0) yk+1= yk

文档评论(0)

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

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

1亿VIP精品文档

相关文档