计算机图形学案例分析.ppt

  1. 1、本文档共59页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二章 光栅图形学 2.1 直线段的扫描转换算法 数值微分法(Digital Differential Analyzer ) 基本思想 假定直线的起点、终点分别为:(x0,y0), (x1,y1),且都为整数。 已知过端点P0 (x0, y0), P1(x1, y1)的直线段L(P0,P1);直线斜率为  数值微分(DDA)法 设步长为?x,有xi+1 =xi + ?x 则yi+1= kxi+1+b= kxi+k?x+b= yi+k?x 因为光栅点的单位是1,对每一个x方向的增量?x =1时; 有yi+1 = yi+k 。即:当x每递增1,y递增k(即直线斜率)。 经过round()函数处理得到显示的光栅点(x,round(y))坐标。 xi+1 =xi+1 yi+1= yi+k 数值微分(DDA)法 void DDALine(int x0,int y0,int x1,int y1,int color) ? int x; float dx, dy, y, k; dx = x1-x0; dy=y1-y0; k=dy/dx ; y=y0; for (x=x0; x?x1; x++) ? drawpixel (x, int(y+0.5), color); y=y+k; ? ? 算法特点: 例:画直线段P0(0,0)--P1(5,2) 数值微分(DDA)法 增量算法:在一个迭代算法中,如果每一步的x、y值是用前一步的值加上一个增量来获得,则称为增量算法。DDA算法就是一个增量算法。 缺点 注意上述分析的算法仅适用于?k? ≤1的情形。在这种情况下,x每增加1,y最多增加1。当 ?k? ?1时,必须把x,y地位互换,y每增加1,x相应增加1/k。 在此算法中,y、k必须是float,且每一步都必须对y进行舍入取整,有浮点数取整运算,不利于硬件实现。 效率低 中点画线法 原理: 算法原理 当M在Q的下方- P2离直线更近更近-取P2 。 M在Q的上方- P1离直线更近更近-取P1 M与Q重合, P1、P2任取一点。 中点画线法 已知:线段两端点(x0,y0),(x1,y1) 直线方程为: F(x,y)=ax+by+c=0 其中a=y0-y1, b=x1-x0, c=x0y1-x1y0 中点画线法 构造判别式:d=F(M)=F(xp+1,yp+0.5) =a(xp+1)+b(yp+0.5)+c 当d0,M在直线(Q点)下方,取右上方P2; 当d0,M在直线(Q点)上方,取右方P1; 当d=0,选P1或P2均可,约定取P1; 能否采用增量算法呢? 分两种情形考虑再下一个像素的判定: 若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 若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 中点画线法 画线从(x0, y0)开始,d的初值 d0=F(x0+1, y0+0.5) = a(x0 +1)+b(y0 +0.5)+c = F(x0, y0)+a+0.5b = a+0.5b 由于只用d 的符号作判断,为了只包含整数运算, 可以用2d代替d来摆脱小数,提高效率。 优点: 只有整数运算,不含乘除法 可用硬件实现 中点画线法 void Midpoint Line (int x0,int y0,int x1, int y1,int color) { int a, b, d1, d2, d, x, y; a=y0-y1; b=x1-x0; d=2*a+b; d1=2*a ; d2=2* (a+b); x=x0;

文档评论(0)

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

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

1亿VIP精品文档

相关文档