计算机图形学画圆实验报告

计算机图形学画圆实验报告

ID:1601628

大小:202.00 KB

页数:9页

时间:2017-11-12

计算机图形学画圆实验报告_第1页
计算机图形学画圆实验报告_第2页
计算机图形学画圆实验报告_第3页
计算机图形学画圆实验报告_第4页
计算机图形学画圆实验报告_第5页
资源描述:

《计算机图形学画圆实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、洛阳理工学院实验报告用纸计算机系B080504班姓名刘青学号B08050427成绩_______实验名称Bresenham画圆算法同组人日期实验题目:使用中心画圆法,结合圆的四对称特性实现圆绘制的演示程序。实验目的:(1)通过单击鼠标左键确定圆心,然后拖拽鼠标来确定圆的半径大小,在演示程序界面上显示圆心坐标和半径的长度;(2)使用边长大于5像素的矩形来表示光栅显示设备上的像素以实现算法的演示效果;(3)实现圆绘制过程的动画演示;(4)演示程序可以显示圆绘制过程中每一步的运算结果;(5)程序界面可以使用的语言及技术包括:C++(Q

2、t,Win32API)、VB/C#(GDI+)或Java(Swing),界面要求简单、整洁,可以充分实现要求的功能。实验内容:(一)实验分析(C#语言GDI+实现)(1)圆的特性圆被定义为到给定中心位置(xc,yc)距离为r的点集。圆心位于原点的圆有四条对称轴x=0,y=0,x=y和x=-y。若已知圆弧上一点(x,y),可以得到其关于四条对称轴的其它7个点,这种性质称为圆的八对称性。因此,只要扫描转换八分之一圆弧,就可以求出整个圆弧的象素集。显示圆弧上的八个对称点的算法:voidCirclePoints(intx,inty,in

3、tcolor){drawpixel(x,y,color);drawpixel(y,x,color);drawpixel(-x,y,color);drawpixel(y,-x,color);drawpixel(x,-y,color);drawpixel(-y,x,color);drawpixel(-x,-y,color);drawpixel(-y,-x,color);}9/9(2)画理想圆流程图如图-1:9/9图-1:画理想圆流程图(3)中点画圆法9/9图-2中点画圆法当前象素与下一象素的候选者如果我们构造函数F(x,y)=x2+

4、y2-R2,则对于圆上的点有F(x,y)=0,对于圆外的点有F(x,y)>0,对于圆内的点F(x,y)<0。与中点画线法一样,构造判别式:d=F(M)=F(xp+1,yp-0.5)=(xp+1)2+(yp-0.5)2-R2若d<0,则应取P1为下一象素,而且再下一象素的判别式为:d=F(xp+2,yp-0.5)=(xp+2)2+(yp-0.5)2-R2=d+2xp+3若d≥0,则应取P2为下一象素,而且下一象素的判别式为d=F(xp+2,yp-1.5)=(xp+2)2+(yp-1.5)2-R2=d+2(xp-yp)+5我们这里讨

5、论的第一个象素是(0,R),判别式d的初始值为:d0=F(1,R-0.5)=1.25-R中点画圆算法:MidPointCircle(intrintcolor){intx,y;floatd;x=0;y=r;d=1.25-r;circlepoints(x,y,color);while(x<=y){if(d<0)d+=2*x+3;else{d+=2*(x-y)+5;y--;9/9}x++;circlepoints(x,y,color);}}为了进一步提高算法的效率,可以将上面的算法中的浮点数改写成整数,将乘法运算改成加法运算,即仅用整

6、数实现中点画圆法。(4)Bresenham画圆法Bresenham画线法与中点画线法相似,,它通过每列象素中确定与理想直线最近的象素来进行直线的扫描的转换的。通过各行,各列的象素中心构造一组虚拟网格线的交点,然后确定该列象素中与此交点最近的的象素。该算法的巧妙之处在于可以采用增量计算,使得对于每一列,只要检查一个误差项的符号,就可以确定该列的所求对象。假设x列的象素已确定,其行下标为y。那么下一个象素的列坐标必为x+1。而行坐标要么不变,要么递增1。是否递增1取决于如图所示的误差项d的值。因为直线的起始点在象素中心,所以误差项d

7、的初始值为0。X下标每增加1,d的值相应递增直线的斜率值,即d=d+k(k=y/x为直线斜率)。一旦d>=1时,就把它减去,这样保证d始终在0、1之间。当d>0.5时,直线与x+1垂直网络线交点最接近于当前象素(x,y)的右上方象素(x+1,y+1);而当d<0.5时,更接近于象素(x+1,y),当d=0。5时,与上述二象素一样接近,约定取(x+1,y+1)。令e=d-0。5。则当e>=0时,下一象素的y下标增加1,而当e〈0时,下一象素的y下标不增。E的初始值为-0.5.(二)实验设计画填充点流程图,如图-3:9/9图-3:画

8、理想圆,记录圆心坐标,计算半径大小,并记录是否开始填充否是初始化计数器、标志变量,设置最大计数值调用Bresenham画圆算法否是填充标记是否为真(While)计数变量小于最大计数值循环变量temp+1填充计算出来的temp个坐标点计算需要填充坐标数组的前tem

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

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

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