- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验二椭圆的转换算法
西北农林科技大学实验报告学院名称: 理学院 专业年级: 计算131姓 名: 学 号:课 程: 计算机图形学 报告日期: 2015.12.04实验二 椭圆的扫描转换算法1.实验目的:了解和掌握中点算法和Bresenham算法。2.实验内容:1)中点Bresenhan画椭圆算法。2)编写源程序,在计算机上编译运行,画出正确的图形和输出交点坐标。3.实验步骤:1)对直线、圆弧的几何形状及相对位置进行分析,选定比较合适的算法模型。设长短半轴分别为a、b,计算的初始位置为(0,b)。椭圆的方程为:。令i. 推导圆弧的上半部分(即第一区域)绘制公式:对于第一区域,如图1所示,点坐标为(),()为点正右边的点,()为点右下方的点,()为、的中点。令第一区域示意图当,时,的初始值为:时,应取P2作为下一个像素点,则其正右方的点的坐标为(,),右下方的点的坐标为(,),中点坐标为(,)。此时,时,应取P1作为下一个像素点,则其正右方的点的坐标为(,),右下方的点的坐标为(,),中点坐标为(,)。此时,ii. 推导圆弧的下半部分(即第二区域)绘制公式:对于第二区域,如图2所示,P点坐标为(,),P1(, )为P点正下方的点、P2(, )为P点右下方的点,M(,)为P1、P2的中点。令设P坐标的初始值为= ,=,=的初始值为:图2 第二区域示意图时,应取P1作为下一个像素点,则其正下方的点的坐标为(,),右下方的点的坐标为(,),中点坐标为(,)。此时, 时,应取P2作为下一个像素点,则其正下方的点的坐标为(,),右下方的点的坐标为(,),中点坐标为(,)。此时,iii.根据对称性原理计算其他3个象限的坐标。2)画出程序流程图:输入圆心和两半径a,bN扫描到分界点YNY0Y3)编写程序的源程序:function MidBresenhamElipse(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);hold on;while b*b*(x+1)a*a*(y-0.5) if d1=0 d1=d1+b*b*(2*x+3); x=x+1; else d1=d1+b*b*(2*x+3)+a*a*(-2*y+2); x=x+1; y=y-1; end plot(x,y,*); plot(-x,-y,*); plot(-x,y,*); plot(x,-y,*); pause(0.5);endhold off;d2=b*b*(x+0.5)*(x+0.5)+a*a*(y-1)*(y-1)-a*a*b*b;hold on;while y0 if d2=0 d2=d2+b*b*(2*x+2)+a*a*(-2*y+3); x=x+1; y=y-1; else d2=d2+a*a*(-2*y+3); y=y-1; end plot(x,y,*); plot(-x,-y,*); plot(-x,y,*); plot(x,-y,*); pause(0.5);endhold off;4)编辑源程序并进行调试: MidBresenhamElipse(7,10)图像如下: MidBresenhamElipse(70,100)图像如下:5)总结:通过这次实习,对中点算法和Bresenham算法有了更进一步的了解, 简单图形的扫描转换常用算法是Bresenham算法,它的思想在于用误差量来衡量点选取的逼近程度。
文档评论(0)