chap5 基本图形生成算法

chap5 基本图形生成算法

ID:37043371

大小:3.49 MB

页数:158页

时间:2019-05-10

chap5 基本图形生成算法_第1页
chap5 基本图形生成算法_第2页
chap5 基本图形生成算法_第3页
chap5 基本图形生成算法_第4页
chap5 基本图形生成算法_第5页
资源描述:

《chap5 基本图形生成算法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、计算机图形学基础华东理工大学计算机系·谢晓玲2如何在指定的输出设备上根据坐标描述构造基本二维几何图形(点、直线、圆、椭圆、多边形域、字符串及其相关属性等)。第五章基本图形生成算法3图形生成的概念直线段的扫描转换圆的扫描转换多边形的扫描转换与区域填充属性处理反走样技术在OpenGL中绘制图形第五章基本图形生成算法4图形的生成:是在指定的输出设备上,根据坐标描述构造二维几何图形。图形的扫描转换:在光栅显示器等数字设备上确定一个最佳逼近于图形的象素集的过程。图5.1用象素点集逼近直线图形生成的概念55.1直线的扫描转换线

2、画图元的扫描转换计算出落在线段上或充分靠近它的一串像素,并以此像素集近似代替连续直线在屏幕上显示的过程。直线的绘制要求(1)直线要直;(2)直线的端点要准确,无定向性无断裂;(3)直线的亮度、色泽要均匀;(4)画线的速度要快;(5)具有不同的色泽、亮度、线型等。6直线的扫描转换解决的问题:给定直线两端点P0(x0,y0)和P1(x1,y1),画出该直线。数值微分法(DigitalDifferentialAnalyzer,DDA)中点Bresenhan算法改进的Bresenhan算法数值微分法数值微分法即DDA(Di

3、gitalDifferentialAnalyzer)算法,是根据直线的微分方程来计算Δx或Δy生成直线的扫描转换算法。在一个坐标轴上以单位间隔对线段取样,以决定另一个坐标轴方向上最靠近理想线段的整数值。数值微分法的本质,是用数值方法解微分方程,通过同时对x和y各增加一个小增量,计算下一步的x、y值。数值微分法(DDA法)8数值微分法(DDA法)直线的微分方程:ε=1/max(

4、△x

5、,

6、△y

7、)图5.2DDA算法原理max(

8、△x

9、,

10、△y

11、)=

12、△x

13、,即

14、k

15、≤1的情况:max(

16、△x

17、,

18、△y

19、)=

20、△y

21、,

22、此时

23、k

24、≥1:数值微分法步骤:给定:两个端点P0(x0,y0)和P1(x1,y1),则:dx=(x1-x0);dy=(y1-y0);根据

25、dx

26、、

27、dy

28、,哪个大,哪个为步长参数:①当

29、dx

30、>

31、dy

32、,即

33、m

34、<1时,若x0x1,即直线从右到左,则x=-1,y=-m②当

35、dx

36、≤

37、dy

38、,即

39、m

40、≥1时,若x0x1,即直线从右到左,则y=-1,x=-1/m数值微分法(DDA法)voidDDA_Li

41、ne(intx0,inty0,intx1,inty1,intcolor)inti;floatdx,dy,length,x,y;if(fabs(x1-x0)>=fabs(y1-y0))length=fabs(x1-x0);elselength=fabs(y1-y0);dx=(x1-x0)/length;dy=(y1-y0)/length;i=1;x=x0;y=y0;while(i<=length){PutPixel(int(x+0.5),int(y+0.5),color);x=x+dx;y=y+dy;i++;x

42、int(y+0.5)y+0.5000+0.5100.4+0.5210.8+0.5311.2+0.5421.6+0.5522.0+0.5直线段的DDA扫描转换举例:线段P0(0,0)和P1(5,2)的DDA方法扫描转换。12增量算法:加法+取整直观、易实现x与dx、y与dy用浮点数表示,每一步要进行四舍五入后取整,不利于硬件实现。数值微分法(DDA法)——特点13中点Bresenham算法算法原理:根据直线的斜率确定或选择变量在x或y方向上每次递增一个单位,而另一方向的增量为1或0,它取决于实际直线与相邻象素点的距离

43、,这一距离称为误差项。14中点Bresenham算法直线的方程图5.4直线将平面分为三个区域假定0≤k≤1,即0≤Δy/Δx≤1,x是最大位移方向,则每次x加1,若M在Q下放,y加1(取Pu);若M在Q上放,取y加0(取Pd)。图5.5Brensemham算法生成直线的原理判别式:则有:图5.5Brensemham算法生成直线的原理d的意义:d=F(xM,yM)=F(xi+1,yi+0.5)=yi+0.5-k(xi+1)-b=yi+0.5-[k(xi+1)+b]=yM-yQ这里:yQ=k(xi+1)+b、yM=yi

44、+0.5图5.5Brensemham算法生成直线的原理误差项的递推(d1<0)图5.6误差项递推(a)误差项的递推(d1≥0)图5.6误差项递推(b)20初始值d的计算中点Bresenham算法图5.9计算初值21改进:用2d△x代替d,令D=2d△x则:中点Bresenham算法——改进yDikdixxdiDi+1D③dyxDiyxxdikdixxdiDi

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

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

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