OpenGL实现皮球运动动画:计算机图形学课程设计

4星 · 超过85%的资源 需积分: 32 152 下载量 120 浏览量 更新于2024-08-02 10 收藏 140KB DOC 举报
"这篇课程设计报告是关于使用C++和OpenGL制作一个皮球运动动画的项目,由河南理工大学计算机科学与技术学院的学生李彦杰在2009年完成,指导教师为徐文鹏。该设计旨在通过模拟皮球从高处落下、弹起并最终静止的过程,让学生掌握计算机图形学中的动画原理和圆的绘制技术。" 在这个项目中,皮球运动动画的设计方案基于以下几个关键知识点: 1. **动画原理**:动画是利用人眼的视觉残留效应,通过连续播放静态图像来创造动态效果。在这个设计中,皮球从一定的高度以一定的横向速度抛出,经过落地、弹起,最终静止,这一过程的动态展示就是基于这个原理。 2. **中点画圆算法**:在计算机图形学中,为了绘制圆形,设计者采用了中点画圆算法。这是一种效率较高的算法,可以精确地生成圆形。在程序中,通过`void MidCircle(int x0, int y0, int r)`函数来实现,其中`x0`, `y0`表示圆心坐标,`r`为圆的半径。 3. **颜色定义**:皮球的颜色由`mLight.Ir`, `mLight.Ig`, `mLight.Ib`定义,分别代表红、绿、蓝三个颜色通道的亮度值。背景颜色则通过`glClearColor`函数设置。 4. **物体属性**:皮球的初始位置(`cx`, `cy`)、初始高度(`cy`)和体积大小(`cr`)被预先定义,这些参数影响皮球在场景中的运动轨迹。 5. **OpenGL函数**:项目使用了多个OpenGL函数来构建和渲染场景,如`glLoadIdentity()`用于加载单位矩阵,`myDisplay()`负责显示内容,`RenderScene(void)`处理场景渲染,而`TimerFunction(int value)`则是用于定时更新画面,实现动画效果。 6. **程序流程**:程序流程涉及初始化(`Init()`)、显示(`myDisplay()`)、场景渲染(`RenderScene()`)以及计时器(`TimerFunction(int value)`)等步骤,确保皮球按照设定的物理规则运动,并在屏幕上实时更新。 7. **光照模型**:虽然这部分未详述,但提到了光的定义,如`Vector H, light`表示光源方向,`Color mLight, mColor`表示材质颜色,可能涉及到光照计算,如漫反射系数`Kd`和法线向量`n`。 8. **窗口设置**:`windowswidth`和`windowshight`定义了窗口的尺寸,控制了皮球运动的可视区域。 这个课程设计不仅涵盖了基本的计算机图形学概念,还涉及到动画制作和交互式图形界面的实现,对理解计算机图形学及其应用有很好的实践价值。