计算机图形学(孙家广.第三版)-第2章ppt课件.ppt

计算机图形学(孙家广.第三版)-第2章ppt课件.ppt

ID:58657674

大小:1.04 MB

页数:123页

时间:2020-10-05

计算机图形学(孙家广.第三版)-第2章ppt课件.ppt_第1页
计算机图形学(孙家广.第三版)-第2章ppt课件.ppt_第2页
计算机图形学(孙家广.第三版)-第2章ppt课件.ppt_第3页
计算机图形学(孙家广.第三版)-第2章ppt课件.ppt_第4页
计算机图形学(孙家广.第三版)-第2章ppt课件.ppt_第5页
资源描述:

《计算机图形学(孙家广.第三版)-第2章ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第2章光栅图形学2.1直线段的扫描转换算法2.2圆弧的扫描转换算法2.3多边形的扫描转换与区域填充2.4字符2.5裁剪2.6反走样2.7消隐2.1直线段的扫描转换算法直线的扫描转换:确定最佳逼近于该直线的一组象素,并且按扫描线顺序,对这些象素进行写操作。三个常用算法:2.1.1数值微分法(DDA)2.1.2中点画线法2.1.3Bresenham算法。2.1.1数值微分(DDA)法基本思想已知过端点P0(x0,y0),P1(x1,y1)的直线段Ly=kx+b直线斜率为从x的左端点x0开始,向x右端点步进。步长=1(个象素),计算相应的y坐标y=kx+B;取象素点(x,round(y))作为

2、当前点的坐标。计算yi+1=kxi+1+B=k1xi+B+kx=yi+kx当x=1;yi+1=yi+k即:当x每递增1,y递增k(即直线斜率);注意上述分析的算法仅适用于k≤1的情形。在这种情况下,x每增加1,y最多增加1。当k1时,必须把x,y地位互换例:画直线段p(0,0)--P1(5,2)xint(y+0.5)y+0.5000100.4+0.5210.8+0.5311.2+0.5421.6+0.5522.0+0.5注:网格点表示象素voidDDALine(intx0,inty0,intx1,inty1,intcolor)intx;floatdx,dy,y,k;dx

3、,=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;2.1.2中点画线法基本思想当前象素点为(xp,yp)。下一个象素点为P1或P2。设M=(xp+1,yp+0.5),为p1与p2之中点,Q为理想直线与x=xp+1垂线的交点。将Q与M的y坐标进行比较。当M在Q的下方,则P2应为下一个象素点;M在Q的上方,应取P1为下一点。构造判别式:d=F(M)=F(xp+1,yp+0.5)=a(xp+1)+b(yp+0.5)+c其中a=y0-y1,b=x1-x0,c=x0y1-x1

4、y0当d<0,M在L(Q点)下方,取右上方P2为下一个象素;当d>0,M在L(Q点)上方,取右方P1为下一个象素;当d=0,选P1或P2均可,约定取P1为下一个象素;d是xp,yp的线性函数,因此可采用增量计算,提高运算效率。若当前象素处于d0情况,则取正右方象素P1(xp+1,yp),要判下一个象素位置,应计算d1=F(xp+2,yp+0.5)=a(xp+2)+b(yp+0.5)=d+a;增量为a若d<0时,则取右上方象素P2(xp+1,yp+1)。要判断再下一象素,则要计算d2=F(xp+2,yp+1.5)=a(xp+2)+b(yp+1.5)+c=d+a+b;增量为a+b画线从(x

5、0,y0)开始,d的初值d0=F(x0+1,y0+0.5)=F(x0,y0)+a+0.5b=a+0.5b。可以用2d代替d来摆脱小数,提高效率。令d0=2a+b,d1=2a,d2=2a+2b,我们有如下算法。例:用中点画线法P0(0,0)P1(5,2)a=y0-y1=-2,b=x1-x0=5d0=2a+b=1,d1=2a=-4,d2=2(a+b)=6ixiyid1001210-33213431-15425voidMidpointLine(intx0,inty0,intx1,inty1,intcolor){inta,b,d1,d2,d,x,y;a=y0-y1,b=x1-x0,d=2*a+b

6、;d1=2*a,d2=2*(a+b);x=x0,y=y0;drawpixel(x,y,color);while(x

7、的值相应递增直线的斜率值k,即d=d+k。一旦d≥1,就把它减去1,这样保证d在0、1之间。当d≥0.5时,最接近于当前象素的右上方象素(xi+1,yi+1而当d<0.5时,更接近于右方象素(xi+1,yi)。为方便计算,令e=d-0.5,e的初值为-0.5,增量为k。当e≥0时,取当前象素(xi,yi)的右上方象素(xi+1,yi+1);而当e<0时,更接近于右方象素(xi+1,yi)。可以改用整数以避免除法。由于算法中只用到误差

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。