1、 课程设计任务书课程设计任务书 题目: 弹跳的彩球动画 1 课程设计任务书及成绩评定课程设计任务书及成绩评定 课程设计的内容和具体要求课程设计的内容和具体要求 1 1设计内容:设计内容: 弹跳的球体:一个着色的三维球体,沿着一条给定的轨道(正弦衰弱曲线) 不断弹跳并同时翻滚,要求按 ESC 停止转动翻滚按加快弹跳速度,按减慢 弹跳速度。 2 2设计要求:设计要求: 球体在屏幕上不断地连续弹跳并同时翻滚,按加快移动速度,按减慢 移动速度。 1 一、摘要一、摘要 本课题实现一个着色的三维小球在一定的空间内按照一条给定的轨道(正弦衰弱曲线)不断弹 跳并同时翻滚。控制键为按 ESC 退出程序,按“”键
2、完成运动加速,使得三维小球加快弹跳速 度;按“”键完成运动减速,使得三维小球减慢弹跳速度。并且小球在屏幕中连续不断的按照 给定的曲线函数跳动,且三维小球自身也要进行翻滚。 该程序的主要模块分为如下部分: 操作控制部分: 该部分主要是实现对屏幕的操作, 达到功能要求中按 “ESC” 结束程序, 按 “” 加快三维小球运动,按“”减慢三维小球的运动。 球体绘制部分:该部分实现三维小球的绘制,其具体的是对三维球体的形状、大小、经纬线、 以及在三维球体中填充颜色。 球体运动轨迹控制部分:该部分是确定球体在屏幕上的运动轨迹,从而达到程序要求的功能。 通过该部分,我们可以任意的对球体的运动轨迹进行设定,使
3、得三维小球的运动丰富多彩。 背景控制部分:通过该部分,我们可以设定三维小球在什么样的背景下运动,对颜色的组合, 使得背景更加丰富,从而完善程序的运行界面,达到美观的作用。 2 二、总体设计方案及主要设计原理二、总体设计方案及主要设计原理 1功能实现功能实现 通过运行程序,我们看到该程序的功能我们已经基本实现,当我们在三维小球在屏幕中按照 预先给定的曲线函数路线进行运动,当我们从键盘输入“”时三维小球就加速运动。当我们从 键盘输入“”时,椭球体减速运动,按下“ESC”键就退出程序,最终达到了功能要求的目的。 2流程图流程图 21 函数函数 qiu 的流程图的流程图 如图 1 所示为函数 qiu
4、的流程图: 图 1:函数 qiu 的流程图 22 绘制球体的程序流程图绘制球体的程序流程图 如图 2、图 3 示为程序绘制球体的流程图: 3 图 2:球体绘制程序流程图 1 图 3:球体绘制程序流程图 2 4 23 主程序流程图主程序流程图 图 4:主程序流程图 3主要算法主要算法 可用绘制三维曲面(规则曲面、参数方程为:x=Rsin()cos(), y=Rsin()sin(), z=Rcos(),0180,0360)来设计球体的形状,用轴测图将它绘制到屏幕上,并对球 面上的小方格进行填充, 选择 510 个不同方位的球体图形用 getimage()命令将它们的图象保存; 对以后路径上的图形只
5、需用命令 Putimage()调出即可。其轨迹方程为: z=A|sin(r+)|e-kr r=(x2+y2)1/2。 5 三、源程序代码三、源程序代码 #include“math.h“ #include“graphics.h“ #include“bios.h“ #include“conio.h“ #define ESC 283 #define PAGEUP 18688 #define PAGEDOWN 20736 double f44,xx,yy,zz,dd; double x04040,y04040,z04040; int x4040,y4040,z4040,this; int scx(do
6、uble xj) int x; x=(int)(xj+40); return(x); int scy(double yj) int y; y=(int)(yj+60); return(y); void teq(double theta) double th; th=theta*3.14159/180; f00=0.87*cos(th); f01=0.0; f02=-0.35*cos(th)-0.71*sin(th); f03=0.0; f10=-0.5; f11=0.0; f12=-0.61; f13=0.0; f20=0.87*sin(th); f21=0.0; f22=-0.35*sin(th)+0.71*cos(th); f23=0.0; f30=0.0; f31=0.0