1、要求:(1) n、R、N、要求可以人为自由控制输入;(2)N+1个正六边形的中心(即外接圆的圆心)在显示屏幕中心。1.2实验目的和意义1. 了解如何利用C语言和图形函数进行绘图;2. 熟悉并掌握C语言的图形模式控制函数,图形屏幕操作函数,以及基本图形函数;3. 通过对Turbo C进行图形程序设计的基本方法的学习,能绘制出简单的图形;4. 通过绘制N+1个正n边形,了解图形系统初始化、图形系统关闭和图形模式的控制,并熟练运用图形坐标的设置,包括定点、读取光标、读取x和y轴的最大值以及图形颜色的设置。1.3程序制作步骤(包括算法思想、算法流程图等)算法思想:1.自动搜索显示器类型和显示模式,初始
2、化图形系统,通过printf、scanf语句控制半径r、边数n、多边形的个数k、边的每次旋转角度d,的自由输入;2.给定一内接圆半径r,由圆内接多边形的算法公式:xi=r*cos(i+1) *2.0*pi/n)+320.0 yi=240.0-r*sin(2.0*pi/n *(i+1) 确定出多边形N的各个顶点坐标,然后利用划线函数line(),连接相邻两点,即形成一个正多边形。 3.根据边与角的关系,以及线段定比分点公式,可知旋转后的多边形的各个顶点的坐标 。公式如下: xi=(xi+xi+1/(k+1) y i=(yi+yi+1/(k+1) k=360/(n*d) (n为多边形的边数,d为多
3、边形旋转的度数) 然后与第二步相同,利用划线函数line(),连接形成又一个旋转过的正多边形,这样就形成了所要绘制的图形;4.关闭图形系统。1.4主程序程序代码:/*- 多边形的逐次旋转-*/#include stdio.hconio.hmath.hgraphics.hstdlib.htime.hvoid main() int graphdriver=DETECT,graphmode; /*自动搜索显示器类型和显示模式*/ int r; int i,j,n,k,d; float x,y,q; int a100,b100; char str180,str280; printf(请输入正接圆的半径
4、r:n); scanf(%d,&r);请输入多边形的边数n:n);请输入多边形的个数k:k);请输入每次的旋转角度d:d); initgraph(&graphdriver,&graphmode,D:TC /*初始化图形系统*/nt注意:maxx=%d,maxy=%dn,getmaxx(),getmaxy();ntr=%d, n=%d, k=%d, d=%d,r,n,k,d); x=(getmaxx()+1)/2.0; y=(getmaxy()+1)/2.0; q=360/n; /*角增量*/ q=q*3.1415926/180; /*将角增量化为弧度*/ for(i=1;i=n;i+) /*计
5、算初始正n角形顶点坐标*/ ai=(int)(int)x+r*cos(i-1)*q); bi=(int)(int)y-r*sin(i-1)*q); an+1=a1; bn+1=b1; /*闭合正n角形,以便连续画线*/ /*-画k个正多角形-*/=k;i+) for(j=1;j0;i-,j-) setfillstyle(EMPTY_FILL,0); pieslice(387+j,290,start,end,37); pieslice(525+j,290,start,end,37); start+=40; end+=40; delay(5); /处于运动状态的自行车车轮的轴线的绘制 putima
6、ge(i-1,200,w,COPY_PUT); line(2,327,562,327); delay(10); /自行车行驶动画的实现 for(i=0;10; pieslice(37,290,start,end,37); pieslice(175,290,start,end,37); /处于静止状态的自行车车轮的轴线的绘制 restorecrtmode();3.5运行结果图 参考文献【1】王汝传,黄海平,林巧民计算机图形学教程(第二版)北京:人民邮电出版社,2009 【2】谭浩强C语言程序设计北京:清华大学出版社,1999 本次实验总结或体会要加强自己的编程开发能力,以及对事物要有极强的观察力和洞察力,还有通过本次试验发现了原来编程这么有意思,做出一道题可以这么有成就感 。 教师评分
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1