计算机图形学课件:第五章基本图形生成算法.ppt

计算机图形学课件:第五章基本图形生成算法.ppt

ID:61835627

大小:1.22 MB

页数:129页

时间:2021-03-23

计算机图形学课件:第五章基本图形生成算法.ppt_第1页
计算机图形学课件:第五章基本图形生成算法.ppt_第2页
计算机图形学课件:第五章基本图形生成算法.ppt_第3页
计算机图形学课件:第五章基本图形生成算法.ppt_第4页
计算机图形学课件:第五章基本图形生成算法.ppt_第5页
资源描述:

《计算机图形学课件:第五章基本图形生成算法.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第5章基本图形生成算法本章要解决的问题■如何在指定的输出设备上根据坐标描述构造基本二维几何图形。图形的生成:在指定的输出设备上,根据坐标描述构造二维几何图形。图形的扫描转换:在光栅显示器等数字设备上确定一个最佳逼近于图形的象素集的过程。5.1直线的扫描转换给定直线两端点P0(x0,y0)和P1(x1,y1),画出该直线。要求:直、端点准确、色泽均匀、速度快等。■数值微分法(DDA法)直线的微分方程:DDA算法原理:ε=1/max(

2、△x

3、,

4、△y

5、)max(

6、△x

7、,

8、△y

9、)=

10、△x

11、,即

12、k

13、≤1的情况:max(

14、△x

15、,

16、△y

17、)=

18、△y

19、,此时

20、k

21、≥1:注:round(x)=(

22、int)(x+0.5)voidDDAline(intx0,inty0,intx1,inty1){intdx,dy,epsl,k;floatx,y,xIncre,yIncre;dx=x1-x0;dy=y1-y0;x=x0;y=y0;if(abs(dx)>abs(dy))epsl=abs(dx);elseepsl=abs(dy);xIncre=(float)(dx)/epsl;yIncre=(float)(dy)/epsl;for(k=0;k<=epsl;k++){putpixel((int)(x+0.5),(int)(y+0.5));x+=xIncre;y+=yIncre;}}特点:增量算

23、法直观、易实现不利于用硬件实现■中点Bresenham算法该直线方程将平面分为三个区域:对于直线上的点,F(x,y)=0;对于直线上方的点,F(x,y)>0;对于直线下方的点,F(x,y)<0。直线的方程:基本原理:假定0≤k≤1,x是最大位移方向判别式:则有:误差项的递推d<0:误差项的递推d≥0:初始值d的计算0≤k≤1时Bresenham算法的算法步骤为:1.输入直线的两端点P0(x0,y0)和P1(x1,y1)。2.计算初始值△x、△y、d=0.5-k、x=x0、y=y0;3.绘制点(x,y)。判断d的符号;若d<0,则(x,y)更新为(x+1,y+1),d更新为d+1-k;否则

24、(x,y)更新为(x+1,y),d更新为d-k。4.当直线没有画完时,重复步骤3。否则结束。改进:用2d△x代替d1.输入直线的两端点P0(x0,y0)和P1(x1,y1)。2.计算初始值△x、△y、d=△x-2△y、x=x0、y=y0。3.绘制点(x,y)。判断d的符号。若d<0,则(x,y)更新为(x+1,y+1),d更新为d+2△x-2△y;否则(x,y)更新为(x+1,y),d更新为d-2△y。4.当直线没有画完时,重复步骤3。否则结束。2(0.5-k)△x=△x-2△y2(1-k)△x=2△x-2△y2(-k)△x=-2△yvoidMidBhline(intx0,inty0,i

25、ntx1,inty1){intdx,dy,d,UpIncre,DownIncre,x,y,xend;if(x0>x1){x=x1;x1=x0;x0=x;y=y1;y1=y0;y0=y;}x=x0;y=y0;dx=x1-x0;dy=y1-y0;d=dx-2*dy;UpIncre=2*dx-2*dy;DownIncre=-2*dy;while(x<=x1){putpixel(x,y);x++;if(d<0){y++;d+=UpIncre;}elsed+=DownIncre;}}■改进的Bresenham算法假定直线段的0≤k≤1基本原理:误差项的计算d初=0,每走一步:d=d+k一旦y方向上

26、走了一步,d=d-1算法步骤:1.输入直线的两端点P0(x0,y0)和P1(x1,y1)。2.计算初始值△x、△y、d=0、x=x0、y=y0。3.绘制点(x,y)。4.d更新为d+k,判断d的符号。若d>0.5,则(x,y)更新为(x+1,y+1),同时将d更新为d-1;否则(x,y)更新为(x+1,y)。5.当直线没有画完时,重复步骤3和4。否则结束。改进1:令e=d-0.5e初=-0.5,每走一步有e=e+k。if(e>0)thene=e-1算法步骤为:1.输入直线的两端点P0(x0,y0)和P1(x1,y1)。2.计算初始值△x、△y、e=-0.5、x=x0、y=y0。3.绘制点

27、(x,y)。4.e更新为e+k,判断e的符号。若e>0,则(x,y)更新为(x+1,y+1),同时将e更新为e-1;否则(x,y)更新为(x+1,y)。5.当直线没有画完时,重复步骤3和4。否则结束。改进2:用2e△x来替换ee初=-△x,每走一步有e=e+2△y。if(e>0)thene=e-2△x算法步骤:1.输入直线的两端点P0(x0,y0)和P1(x1,y1)。2.计算初始值△x、△y、e=-△x、x=x0、y=y0。3.绘

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

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

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