版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、PAGE PAGE 8实验三 圆的生成算法的实现班级 信计 学号51姓名 程芳超 分数 一、实验目的和要求:1、掌握圆的生成算法的基本原理2、熟悉圆的生成算法,利用Turbor实现中点画圆算法、圆的Bresenham算法。二、实验内容:1、熟悉圆上的8个对称点的算法,利用中点画圆算法画圆并在屏幕上显示出来;2、使用Bresenham画圆法生成一个圆;3、利用line()函数画圆:.圆的参数方程;圆心为o(x0,y0)。以下为各程序的实现代码:1、中点画圆算法:运行结果为: #include Conio.h#include graphics.h#include stdio.h#include m
2、ath.h#define closegr closegraph#define xo 300#define yo 250#define DELTA 1.0#define max 100typedef structint x; int y;Point;typedef structint pointNum; Point *vertices; Polygon;void initgr(void) int gd = DETECT, gm = 0; registerbgidriver(EGAVGA_driver); initgraph(&gd, &gm, );void putpixels(int x,int
3、 y,int color,int n) int i,j; for(i=-n/2;i=n/2;i+) for(j=-n/2;jx) if(d=0) d+=2.0*x+3; elsed+=2.0*(x-y)+5; y-; x+; CirclePoints(x,y,color); main() initgr(); cleardevice(); MidPointCircle1(150,4); getch(); closegraph(); 运行结果为: 2圆的Bresenham算法:#include #include #include #includevoid BresenhamCircle(xc,yc
4、,radius,color)int xc,yc, radius,color; int x,y,d; x=0 ; y=radius ; d=3-2*radius ;while(xy) plot_circle_points(xc,yc,x,y,color) ; if(d0) d+=4*x+6; else d+=4*(x-y)+10; y-; x+;if(x=y) plot_circle_points(xc,yc,x,y,color) ;plot_circle_points(xc,yc,x,y,color) int xc,yc,x,y,color;putpixel(xc+x,yc+y,color);
5、putpixel(xc-x,yc+y,color);putpixel(xc+x,yc-y,color);putpixel(xc-x,yc-y,color);putpixel(xc+y,yc+x,color);putpixel(xc-y,yc+x,color);putpixel(xc+y,yc-x,color);putpixel(xc-y,yc-x,color);main() int a,b,c,e ; int graphdriver=DETECT ; int graphmode=0; initgraph(&graphdriver,&graphmode, ); cleardevice(); a=
6、300; b=300; c=150; e=3; BresenhamCircle(a,b,c,e ); getch(); closegraph();运行结果为: 3、利用line()函数画圆 #include #include #include #include #include main() int i,r,xx46,yy46,x0,y0; float t=360/45*3.14/180; int gdriver=DETECT,gmode; initgraph(&gdriver,&gmode,); cleardevice(); setbkcolor(14); setcolor(4); x0=3
7、00;y0=250;r=200; for(i=0;i46;i+) xxi=x0+r*cos(i*t); yyi=y0-r*sin(i*t); for(i=0;i45;i+) line(xxi,yyi,xxi+1,yyi+1); settextstyle(1,0,5); outtextxy(300,200,O); line(300,250,500,250); getch(); closegraph(); return 0;运行结果为: 三、实验结果分析1、显示圆上的8个对称点的算法如下:void CirclePoints(int x,int y,int color) putpixel(x,y,c
8、olor); putpixel(y,x,color); putpixel(-x,y,color); putpixel(y,-x,color); putpixel(x,-y,color); putpixel(-y,x,color); putpixel(-x,-y,color); putpixel(-y,-x,color);若已知圆弧上一点(x,y),可以得到其关于4条对称轴的其他七个点,因此要扫描转换1/8圆弧就可以求出表示整个圆弧的像素集。2、圆的Bresenham算法:分析出来点(x,y), (x,-y),(-x,y),(-x,-y),(y,x),(y,-x),(-y,x),(-y,-x)的
9、另外7个点。关于中心画圆算法,通过计算x = 0到 x = y的1/8圆的范围,然后通过对称原理得到其他7/8个点的信息。这里和Bresenham算法有很多相似之处,同样有一个决定下一个位置的关键值d来做权衡处理。在中点画圆算法中,通过平移的方法将假设圆心在坐标原点,然后计算,最后再平移到真实原心位置。3、在Bresenham算法中,只需做加法和乘4的乘法,因此远的Bresenham算法运行速度很快,适宜在硬件上实现。4、t的值不同,所画圆的圆滑程度不同,圆心位置可随坐标改变。5、两种算法生成一点所需的计算量比较每种循环中各种运算次数总和画一个八分或四分圆的总运算次数画每一点所需要的平均运算次
10、数比较加法移位Bresenham法2(d=0)316中点算法2(d=0)327通过实际的程序运行进行比较,结论是中点画圆法速度比较快,就算法本身而言,该算法仍可以在某些方面进行改进,如其中的浮点运算改为整数运算等,执行速度将更快。生成直线和圆这类基础算法在编程时要被无数次的调用,可能每生成一帧画面就要被调用成百上千次,因此其执行速度是至关重要的。而这类基础算法的长度都很短,即使多用一些分支,多用一些变量和语句,一般来说只不过是增加几十个语句,这样的空间增加与算法极其重要的速度来比较是相对次要的因素。因此在开发图形学的基础算法时,如果有可能提高算法的速度,应不惜多占用一些存储空间。内容总结(1)实验三 圆的生成算法的实现班级 信计 学号51姓名 程芳超 分数 一、实验
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中国电信校园招聘“优才计划”专项招聘备考题库含答案详解(达标题)
- 未来五年儿童靴子市场需求变化趋势与商业创新机遇分析研究报告
- 2026河北新质科技有限公司校园招聘4人备考题库【真题汇编】附答案详解
- 2026安徽蚌埠市卫生健康委委属医院第二批“校园招聘”79人备考题库及参考答案详解(培优b卷)
- 2026湖北黄石市阳新县高中学校校园招聘教师26人备考题库及一套答案详解
- 2026云南今邦日杂再生资源有限公司招聘业务员1人备考题库附答案详解(能力提升)
- 2026北京对外经济贸易大学非事业编人员招聘7人备考题库附答案详解【基础题】
- 2026江西萍乡市融资担保集团有限公司招聘员工4人备考题库及参考答案详解【突破训练】
- 2026春季河北邯郸市教育局市直学校选聘博硕人才300人备考题库带答案详解(培优a卷)
- 2026山东青岛海发国际贸易有限公司招聘10人备考题库附参考答案详解(培优a卷)
- 爆破作业人员教育培训制度
- 辊道窑作业标准指导书
- 1993年物理高考试卷与答案
- GB/T 24421.1-2023服务业组织标准化工作指南第1部分:总则
- 井巷用全自动全液压凿岩台车设计书
- 蚕桑产业建设汇报材料(四)
- 借调人员协议-三方协议
- 2022版化学检验工高级工考核题库(全真题库)
- DB11-T 1000.1-2020企业产品标准编写指南 第1部分:标准的结构和通用内容的编写
- 汽车吊吊装施工方案
- 学前教育原理历年真题真题
评论
0/150
提交评论