资源预览内容
第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
亲,该文档总共4页全部预览完了,如果喜欢就下载吧!
资源描述
1实验三:圆的生成算法的实现班级 08 信计 2 学号 64 姓名刘辉 分数 一、实验目的和要求1.理解圆生成的基本原理,掌握几种常见的圆生成算法。2.利用 Visual C+ 实现圆生成的中点画圆的算法。3.利用 Visual C+ 实现圆的 Bresenham 算法。4.简单了解其他算法。 二、实验内容:1.利用中点画图算法,在屏幕上生成任意一段圆弧。2.利用图的对称性,将(1)题生成的圆弧扩展为一个整圆。3.利用 bresebham 算法设计出一段圆弧。 三、实验步骤:1.预习教材关于圆的生成原理。2.仿照教材关于圆生成的中点画圆算法和 bresenham 算法,使用 C+实现该算法。3.调试、编译、运行程序。 利用 bresenham 算法生成圆的代码:#include#include#include#include#include#include voidvoid BresenhemCircle(intBresenhemCircle(int centerx,centerx, intint centery,centery, intint radius,radius, intint color,color, intint type);type);voidvoid main()main() intint drive=DETECT,mode;drive=DETECT,mode;intint i,j;i,j;initgraph(initgraph(BresenhemCircle(300,200,100,150,0);BresenhemCircle(300,200,100,150,0);getch();getch();closegraph();closegraph(); voidvoid BresenhemCircle(intBresenhemCircle(int centerx,centerx, intint centery,centery, intint radius,radius, intint color,color, intint type)type)2 intint x x =type=type = = 0;/*0;/*初始横坐标为原点初始横坐标为原点*/*/intint y y = = radius;radius; /*/*初始纵坐标远离原点初始纵坐标远离原点*/*/intint deltadelta = = 2*(1-radius);2*(1-radius);intint direction;direction;whilewhile (y(y = 0)0) getch();getch();ifif (!type)/*(!type)/*执行执行*/*/ /*/*在上半圆画两点在上半圆画两点*/*/putpixel(centerx+x,putpixel(centerx+x, centery+y,centery+y, color);color);putpixel(centerx-x,putpixel(centerx-x, centery+y,centery+y, color);color);/*/*在下半圆画两点在下半圆画两点*/*/putpixel(centerx-x,putpixel(centerx-x, centery-y,centery-y, color);color);putpixel(centerx+x,putpixel(centerx+x, centery-y,centery-y, color);color);getch();getch(); elseelse line(centerx+x,line(centerx+x, centery+y,centery+y, centerx+x,centerx+x, centery-y);centery-y);line(centerx-x,line(centerx-x, centery+y,centery+y, centerx-x,centerx-x, centery-y);centery-y);getch();getch(); ifif (delta(delta 0)0) ifif (2*(delta-x)-1)(2*(delta-x)-1) 0)0)3directiondirection = = 3;3; elseelsedirectiondirection = = 2;2; elseelsedirection=2;direction=2;switch(direction)switch(direction) casecase 1:1:x+;x+;deltadelta +=+= (2*x+1);(2*x+1); break;break;casecase 2:2:x+;x+;y-;y-;deltadelta +=+= 2*(x-y+1);2*(x-y+1); break;break;casecase 3:3:y-;y-;deltadelta +=+= (-2*y+1);(-2*y+1); break;break; 实验结果:实验结果:4四、实验结果分析:Bresenham 画圆算法是最有效的算法之一,通过画出八分之一的圆周,对称得到整个圆周,第一想先的图形,让 X 轴量平均增加,通过选择理想的 Y 轴坐标,确定得到整个图形,算法的实现简单,且时间复杂度较低。
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号