第四讲-改进的Bresanham算法圆的扫描转换课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第四讲-改进的Bresanham算法圆的扫描转换课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第四 改进 Bresanham 算法 扫描 转换 课件
- 资源描述:
-
1、2022-12-26济南大学信息学院 1第第4 4讲讲 改进的改进的BrensemhamBrensemham算法算法 圆的扫描转换圆的扫描转换2022-12-26济南大学信息学院 25.1.2 中点中点Bresenham算法算法设两端点为P0(x0,y0)和 P1(x1,y1),则直线的方程该直线方程将平面分为三个区域:对于直线上的点,F(x,y)=0;对于直线上方的点,F(x,y)0;对于直线下方的点,F(x,y)0F(x,y)=0F(x,y)0F(x,y)=0F(x,y)0F(x,y)=y-2x-1=0F(x,y)=y-2x-1=02022-12-26济南大学信息学院 4Bresenham
2、算法的基本原理算法的基本原理:在最大位移方向上走一步时,在另一个方向上是否走步取决于误差项的判断。假定0k1,x是最大位移方向Pu(xi+1,yi+1)M(xi+1,yi+1/2)P(xi,yi)Pd(xi+1,yi)图5-5 Brensemham算法生成直线的原理Q2022-12-26济南大学信息学院 5判别式判别式:)1(5.0)5.0,1(),(bxkyyxFyxFdiiiiMM则有:)0()0(1dydyyPu(xi+1,yi+1)M(xi+1,yi+1/2)P(xi,yi)Pd(xi+1,yi)图5-5 Brensemham算法生成直线的原理Q00k1k1bkxyyxF),(2022
3、-12-26济南大学信息学院 6d0(xi,yi)(xi+1,yi+0.5)(xi+2,yi+1.5)误差项的递推误差项的递推d=0(xi,yi)(xi+1,yi+0.5)(xi+2,yi+0.5)1(5.0)5.0,1(),(bxkyyxFyxFdiiiiMM00k1k12022-12-26济南大学信息学院 8初始值初始值d的计算的计算kkbkxybxkyyxFd5.0 5.0 )1(5.0 )5.0,1(0000000 0),(bkxyyxF00k1k12022-12-26济南大学信息学院 9用2dx代替d1.输入直线的两端点P0(x0,y0)和P1(x1,y1)。2.计算初始值x、y、d
4、=x-2y、x=x0、y=y0。3.绘制点(x,y)。判断d的符号。若d0.5,则(x,y)更新为(x+1,y+1),同时将d更新为d-1;否则(x,y)更新为(x+1,y)。5.当直线没有画完时,重复步骤3和4。否则结束。2022-12-26济南大学信息学院 13改进改进1:为计算方便,令e=d-0.50)(e 0)(e 1111iiiiiyyyxx e初=-0.5,每走一步有e=e+k。if(e0)then e=e-12022-12-26济南大学信息学院 14算法步骤算法步骤为:(0k1)1.输入直线的两端点P0(x0,y0)和P1(x1,y1)。2.计算初始值x、y、e=-0.5、x=x
5、0、y=y0。3.绘制点(x,y)。4.e更新为e+k,判断e的符号。若e0,则(x,y)更新为(x+1,y+1),同时将e更新为e-1;否则(x,y)更新为(x+1,y)。5.当直线没有画完时,重复步骤3和4。否则结束。参见程序参见程序bmipv01.c2022-12-26济南大学信息学院 15改进改进2:为方便硬件实现,作以下改进摆脱小数、除法运算。用2ex来替换e e初=-x,每走一步有e=e+2y。if(e0)then e=e-2x2022-12-26济南大学信息学院 16算法步骤算法步骤:(0k1)1.输入直线的两端点P0(x0,y0)和P1(x1,y1)。2.计算初始值x、y、e=
6、-x、x=x0、y=y0。3.绘制点(x,y)。4.e更新为e+2y,判断e的符号。若e0,则(x,y)更新为(x+1,y+1),同时将e更新为e-2x;否则(x,y)更新为(x+1,y)。5.当直线没有画完时,重复步骤3和4。否则结束。2022-12-26济南大学信息学院 17x y e e+2dy00-5 -110-1 321-7 -331-3 142-9 -552-5 -1 例例:画直线段P0(0,0)-P1(5,2)斜率0k1 e的的初始值-x=-5 2y4 -2x-10相应坐标值和判别式如下:相应坐标值和判别式如下:0 1 2 3 4 5321Line:P0(0,0)-P1(5,2)
7、2022-12-26济南大学信息学院 18以上算法仅考虑,0k1时的情况,对于其它情况依此类推。以1k为例说明2022-12-26济南大学信息学院 191kdkkd2022-12-26济南大学信息学院 20对于点Pi(xi,yi)0.5)(d 0.5)(d 1111iiiiixxxyy令e=d-0.50)(e 0)(e 1111iiiiixxxyyK1K12022-12-26济南大学信息学院 21再再用2ey来替换e e初=-y,每走一步有e=e+1/k=e+2x。if(e0)then e=e-2yK1K12022-12-26济南大学信息学院 22算法步骤算法步骤:(k 1)1.输入直线的两端
8、点P0(x0,y0)和P1(x1,y1)。2.计算初始值x、y、e=-y、x=x0、y=y0。3.绘制点(x,y)。4.e更新为e+2x,判断e的符号。若e0,则(x,y)更新为(x+1,y+1),同时将e更新为e-2y;否则(x,y)更新为(x+1,y)。5.当直线没有画完时,重复步骤3和4。否则结束。2022-12-26信息科学与工程学院信息科学与工程学院 23圆的扫描转换圆的扫描转换解决的问题:解决的问题:绘出圆心在原点,半径为整数R的圆x2+y2=R2圆心不在原点的圆,先平移至原点,扫描转换后再平移回原位置2022-12-26信息科学与工程学院信息科学与工程学院 24(x,y)yy=-
9、xy=xB(y,x)C(-y,x)D(-x,y)E(-x,-y)F(-y,-x)G(y,-x)H(x,-y)A A5.2.1 5.2.1 八分法画圆八分法画圆2022-12-26信息科学与工程学院信息科学与工程学院 25程序段为:程序段为:void circlepoint(int x,int y)putpixel(x,y,14);putpixel(y,x,14);putpixel(-y,x,14);putpixel(-x,y0,14);putpixel(-x,-y,14);putpixel(-y,-x0,14);putpixel(y,-x,14);putpixel(x,-y,14);程序程序C
展开阅读全文