资源描述:
《椭圆的扫描转换算法.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验二 椭圆的扫描转换算法1.实验目的:了解和掌握中点算法和Bresenham算法。2.实验内容:1)中点Bresenhan画椭圆算法。2)编写源程序,在计算机上编译运行,画出正确的图形和输出交点坐标。3.实验步骤:1)实验原理:设长短半轴分别为a、b,计算的初始位置为<0,b)。椭圆的方程为:。令i.推导圆弧的上半部分<即第一区域)绘制公式:对于第一区域,如图1所示,点坐标为<),<)为点正右边的点,<)为点右下方的点,<)为、的中点。令6/6第一区域示意图当,时,的初始值为:时,应取P2作为下一个像素点,则其正右方的点的坐标为
2、<,),右下方的点的坐标为<,),中点坐标为<,)。b5E2RGbCAP此时,时,应取P1作为下一个像素点,则其正右方的点的坐标为<,),右下方的点的坐标为<,),中点坐标为<,)。p1EanqFDPw此时,ii.推导圆弧的下半部分<即第二区域)绘制公式:对于第二区域,如图2所示,P点坐标为<,),P1<,)为P点正下方的点、P2<,)为P点右下方的点,M<,)为P1、P2的中点。DXDiTa9E3d6/6令设P坐标的初始值为=,=,=的初始值为:图2第二区域示意图时,应取P1作为下一个像素点,则其正下方的点的坐标为<,),右下方
3、的点的坐标为<,),中点坐标为<,)。RTCrpUDGiT此时,时,应取P2作为下一个像素点,则其正下方的点的坐标为<,),右下方的点的坐标为<,),中点坐标为<,)。5PCzVD7HxA此时,iii.根据对称性原理计算其他3个象限的坐标。6/62)编写程序的源程序:functionMidBresenhamElipse(a,b>x=0。y=b。d1=b*b+a*a*(-b+0.25>。plot(x,y,'*'>。plot(-x,-y,'*'>。plot(-x,y,'*'>。plot(x,-y,'*'>。pause(0.5>。hol
4、don。whileb*b*(x+1>ifd1<=0d1=d1+b*b*(2*x+3>。x=x+1。elsed1=d1+b*b*(2*x+3>+a*a*(-2*y+2>。x=x+1。y=y-1。endplot(x,y,'*'>。plot(-x,-y,'*'>。plot(-x,y,'*'>。plot(x,-y,'*'>。pause(0.5>。endholdoff。d2=b*b*(x+0.5>*(x+0.5>+a*a*(y-1>*(y-1>-a*a*b*b。holdon。whiley>0ifd2<=0d2=d2+
5、b*b*(2*x+2>+a*a*(-2*y+3>。x=x+1。y=y-1。elsed2=d2+a*a*(-2*y+3>。y=y-1。endplot(x,y,'*'>。plot(-x,-y,'*'>。plot(-x,y,'*'>。plot(x,-y,'*'>。pause(0.5>。end6/6holdoff。4)运行源程序:在MATLAB命令窗口执行如下命令:>>MidBresenhamElipse(7,10>得到:在MATLAB命令窗口执行如下命令:>>MidBresenhamElipse(70,100>得到:6/64.实验总结:
6、通过这次实习,对中点算法和Bresenham算法有了更进一步的了解,同时懂得了理论与实践相结合的重要性,只有实践才能培养我们的独立思考的能力和动手能力,在这次实习过程中可以说是困难重重,但在同学的耐心讲解和自己查阅资料的情况下,都得到了进一步地解决。总的来说,这次实习收获还是挺多的。jLBHrnAILg申明:所有资料为本人收集整理,仅限个人学习使用,勿做商业用途。6/6