您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > 图形学综合性实验报告
综合性、设计性实验成绩单开设时间:专业班级学号姓名实验题目与要求题目:计算机图形学综合性实验要求:设计一个较复杂的美术图案,以静态方式或者动画方式在屏幕上显示。自我评价因为对于TurboC,本人运用得并不熟练,对于很多函数都无法实现出来,所以本实验本人是以C语言完成的。C语言中提供了丰富的图形处理函数,这大大简化了编程的难度。本人对于本次实验完成的是设计了一个由一定数量等圆围成的圆形图案(即运动圆圈,其中等圆随机变换颜色)在指定的区域内来回弹动。通过这次实验,我大致掌握了要如何生成图像,学习了C语言中处理图形的功能,知道了如何巧妙地实现一个动态效果的图像,在完成的过程中虽然出现了各种问题,但最终还是经过耐心地分析完成了。成绩教师签名:1.目的和要求生成一个由一定数量等圆围成的圆形图案(即运动圆圈,其中等圆随机变换颜色)在指定的区域内来回弹动。为了实验方便,实验所需数据都在程序中自定义好,无需用户自行设定。2.设计与分析1)生成运动圆圈由主程序提供运动圆圈的圆心,然后根据该圆心以一定半径按360度平均分配得出组成运动圆圈的等圆的圆心,并随机设定每一等圆的边的颜色,最后画出等圆生成运动圆圈。生成运动圆圈的大概流程为:2)实现运动圆圈来回弹动功能首先设定区域边框,x1,x2,y1,y2(分别为左、右、上和下的边界),随意设定运动圆圈的初始圆心(距离边界必须大于或等于运动圆圈的半径),然后开始按x++,y++的形式运动,当圆心和边界的距离等于半径时,改变x或y的变化规律(x1:x++,x2:x--,y1:y++,y2:y--),每次变换圆心都把前一次生成的圆圈清除,生成新的圆圈,从而实现视觉上的圆圈运动。4.具体实现(程序源代码)#includegraphics.h#includeconio.h#includemath.h#includedos.h#includewinbgi.cppvoidcircles(intx,inty)//生成运动圆圈{inti,n;for(i=0;i60;i++){提供圆心分配等圆圆心,设定颜色画出等圆生成运动圆圈n=random(16);if(n==0)n++;setcolor(n);circle(x+60*cos(i),y+60*sin(i),20);}}main(){intdriver=DETECT,mode,i,a=100,c=100,b=1340,d=800,x,y,p=0,q=1,n;initgraph(&driver,&mode,);x=180;y=300;circles(x,y);for(i=180;;i++){n=random(16);if(n==0)n++;setcolor(n);line(a,c,b,c);line(a,c,a,d);line(a,d,b,d);line(b,c,b,d);if(x=180)p=0;//控制圆圈的运动规律if(y=180)q=1;if(x=1260)p=1;if(y=720)q=0;if(p==0)x+=30;elsex-=30;if(q==1)y+=30;elsey-=30;circles(x,y);delay(200);cleardevice();if(kbhit())break;}}3.运行结果1.初始状态2.运动过程5.总结通过这次实验,我大致掌握了要如何生成图像,学习了C语言中处理图形的功能,知道了如何巧妙地实现一个动态效果的图像,在完成的过程中虽然出现了各种问题,但最终还是经过耐心地分析完成了。同时,在这次试验中我也发现了自身的不足,例如图案的设计过于简单,图案运动的方式不够稳定,画面总会闪烁不停,这些都有待我日后慢慢学习增长。
本文标题:图形学综合性实验报告
链接地址:https://www.777doc.com/doc-2598408 .html