计算机图形学--圆的生成算法的实现

上传人:第*** 文档编号:38802532 上传时间:2018-05-08 格式:DOC 页数:4 大小:103KB
返回 下载 相关 举报
计算机图形学--圆的生成算法的实现_第1页
第1页 / 共4页
计算机图形学--圆的生成算法的实现_第2页
第2页 / 共4页
计算机图形学--圆的生成算法的实现_第3页
第3页 / 共4页
计算机图形学--圆的生成算法的实现_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《计算机图形学--圆的生成算法的实现》由会员分享,可在线阅读,更多相关《计算机图形学--圆的生成算法的实现(4页珍藏版)》请在金锄头文库上搜索。

1、1实验三:圆的生成算法的实现班级 08 信计 2 学号 64 姓名刘辉 分数 一、实验目的和要求1.理解圆生成的基本原理,掌握几种常见的圆生成算法。2.利用 Visual C+ 实现圆生成的中点画圆的算法。3.利用 Visual C+ 实现圆的 Bresenham 算法。4.简单了解其他算法。 二、实验内容:1.利用中点画图算法,在屏幕上生成任意一段圆弧。2.利用图的对称性,将(1)题生成的圆弧扩展为一个整圆。3.利用 bresebham 算法设计出一段圆弧。 三、实验步骤:1.预习教材关于圆的生成原理。2.仿照教材关于圆生成的中点画圆算法和 bresenham 算法,使用 C+实现该算法。3

2、.调试、编译、运行程序。 利用 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;i

3、ntint 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 int

4、int 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,putpix

5、el(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()

6、;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)3directiond

7、irection = = 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 轴坐标,确定得到整个图形,算法的实现简单,且时间复杂度较低。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件 > 初中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号