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

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

ID:59485699

大小:1009.50 KB

页数:131页

时间:2020-09-13

计算机图形学(孙家广第三版)-第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、两个步骤:裁剪→扫描转换:最常用,节约计算时间;扫描转换→裁剪:算法简单。二维裁剪扫描转换显示2.1直线段的扫描转换算法直线的扫描转换:确定最佳逼近于该直线的一组象素,并且按扫描线顺序,对这些象素进行写操作。三个常用算法:2.1.1数值微分法(DDA)2.1.2中点画线法2.1.3Bresenham算法。2.1.1数值微分(DDA)法BasicIdea:GivenastraightlineLovertwopointsP0(x0,y0),P1(x1,y1)y=kx+b直线斜率为2.1.1数值微分(DDA)法BasicIdea:从x的左端点x0开始,向x右端点步进

3、。步长=1(个象素),计算相应的y坐标y=kx+B;取象素点(x,round(y))作为当前点的坐标。计算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注:网格点表示象素voidDDALin

4、e(intx0,inty0,intx1,inty1,intcolor)intx;floatdx,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;2.1.2中点画线法BasicIdeaIfcurrentpointis(xp,yp),thenthenextpointiseitherP1orP2.LetM=(xp+1,yp+0.5)bethecenterpointofP1andP2.Qistheintersectionof

5、lineLandx=xp+1.CompareQandM:IfMisbelowQ,P2isthenextpoint;Otherwise,P1isthenextpoint.过(x0,y0),(x1,y1)两端点的直线段的隐式方程:F(x,y)=ax+by+c=0其中a=y0-y1,b=x1-x0,c=x0y1-x1y0直线的正负划分性F(x,y)>0F(x,y)<0F(x,y)=0y0x直线上方的点:F(x,y)>0直线下方的点:F(x,y)<0Constructadiscriminativefunction:d=F(M)=F(xp+1,yp+0.5)=a(xp+

6、1)+b(yp+0.5)+c其中a=y0-y1,b=x1-x0,c=x0y1-x1y0Ifd<0,MisbelowL(Q),P2isthenextpoint;Ifd>0,MisaboveL(Q),P1isthenextpoint;Ifd=0,bothP1andP2areOK,(统一取P1)d是xp,yp的线性函数,因此可采用增量计算,提高运算效率。Ifforcurrentpoint,d0,thenP1,forthenextpoint:d1=F(M1)=a(xp+2)+b(yp+0.5)=d+a;增量为aIfforcurrentpoint,d<0,thenP2

7、,forthenextpoint:d2=F(M2)=a(xp+2)+b(yp+1.5)+c=d+a+b;增量为a+b画线从(x0,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,我们有如下算法。voidMidpointLine(intx0,inty0,intx1,inty1,intcolor){inta,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

8、,y=y0;drawpixel(x,y

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

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

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