资源简介
用OpenGL库写的一个小球落地后弹起的程序,并且无速度损失,弹起到起始高度,如果你修改起始x方向速度xstep的初值,小球可以边跳跃边前进,并且碰到边框会反弹回来。为了验证弹起高度是否等于原来高度,我画了两条红色基准线,你会看到两条线一次又一次的重合。

代码片段和文件信息
#include
#include “gl/glut.h“
#include
#include
#include
// 参数指定正方形的位置和大小
float xsite = 100.0;
float ysite = 200.0;
GLsizei rsize = 20;
// 正方形运动变化的步长
float xstep = 2.0f;
float ystep = 0.0f;
// 窗口的大小
float windowWidth = 500;
float windowHeight = 400;
int TIME=13;
inline void myArc(int xint yint aint bint start_angleint end_angledouble frdouble fgdouble fb)
{
int angle;
const double pi = acos(-1);
if(fr>=0)
{
glBegin(GL_TRIANGLE_FAN);
glColor3d(frfgfb);
glVertex2i(xy);
for(angle = start_angle; angle <= end_angle; angle = angle + 1)
{
int px = x + a*cos(angle/180.0 *pi);
int py = y + b*sin(angle/180.0 *pi);
glVertex2i(pxpy);
}
glEnd();
}
else
{
glBegin(GL_LINE_STRIP);
for(angle = start_angle; angle <= end_angle; angle = angle + 1)
{
int px = x + a*cos(angle/180.0 *pi);
int py = y + b*sin(angle/180.0 *pi);
glVertex2i(pxpy);
}
glEnd();
}
}
void drawLine(int Linex1int Liney1int Linex2int Liney2)
{
glColor3f(1.0f 0.0f 0.0f); //RGB
glBegin(GL_LINES);
{
glVertex2i(Linex1Liney1);
glVertex2i(Linex2Liney2);
}
glEnd();
glFlush();
}
inline void myCircle(int xint yint radiusdouble frdouble fgdouble fb)
{
myArc(xyradiusradius0360frfgfb);
drawLine(0ywindowWidthy);
}
void RenderScene(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0f 0.0f 0.0f);
//glRectf(xsite ysite xsite+rsize ysite+rsize);
myCircle(xsiteysitersize01.01.0);
drawLine(0200windowWidth200);
//清空命令缓冲区并交换帧缓存
glutSwapBuffers();
}
void ChangeSize(GLsizei w GLsizei h)
{
if(h == 0) h = 1;
glViewport(0 0 w h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if (w <= h)
{
windowHeight = 300.0f*h/w;
windowWidth = 300.0f;
}
else
{
windowWidth = 300.0f*w/h;
windowHeight = 300.0f;
}
glOrtho(0.0f windowWidth 0.0f windowHeight 1.0f -1.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void TimerFunction(int value)
{
// 处理到达窗口边界的球,使之反弹
if(xsite+rsize > windowWidth || xsite-rsize < 0){
if(xstep>0)xstep = -xstep;
}
if(ysite+rsize > windowHeight || ysite-rsize < 0){
if(ystep<0)
ystep = -(ystep-0.205);
}
if(xsite-rsize < 0) xstep = -xstep-0.1;
if(ysite > windowHeight-rsize) ysite = windowHeight-rsize;
// 根据步长修改正方形的位置
ystep = ystep-0.5*450*0.030*0.030;
xsite += xstep;
ysite += ystep;
// 用新坐标重新绘图
glutPostRedisplay();
glutTimerFunc(TIMETimerFunction 1);
}
void SetupRC(void)
{
//设置窗口清除色为白
glClearColor(1.0f 1.0f 1.0f 1.0f);
}
void main()
{
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
glutCreateWindow(“Bounce“);
glutDisplayFunc(RenderScene);
glutReshapeFunc(ChangeSize);
glutTimerFunc(TIME TimerFunction 1);
SetupRC();
glutMainLoop();
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3014 2012-04-13 14:30 BallGame\BallGame.cpp
文件 3425 2012-04-13 10:24 BallGame\BallGame.dsp
文件 539 2012-04-13 10:25 BallGame\BallGame.dsw
文件 50176 2012-04-13 14:37 BallGame\BallGame.ncb
文件 53760 2012-04-13 14:37 BallGame\BallGame.opt
文件 692 2012-04-13 14:30 BallGame\BallGame.plg
文件 1999872 2012-04-13 09:32 BallGame\Debug\BallGame.bsc
文件 180314 2012-04-13 14:29 BallGame\Debug\BallGame.exe
文件 267608 2012-04-13 14:29 BallGame\Debug\BallGame.ilk
文件 21256 2012-04-13 14:30 BallGame\Debug\BallGame.obj
文件 3700532 2012-04-13 14:12 BallGame\Debug\BallGame.pch
文件 476160 2012-04-13 14:29 BallGame\Debug\BallGame.pdb
文件 0 2012-04-13 09:32 BallGame\Debug\BallGame.sbr
文件 230400 2012-04-13 14:30 BallGame\Debug\vc60.idb
文件 77824 2012-04-13 14:30 BallGame\Debug\vc60.pdb
文件 60468 1998-08-13 02:54 BallGame\gl\FGL.H
文件 7273 1998-08-13 02:54 BallGame\gl\FGLU.H
文件 10152 1998-08-13 02:54 BallGame\gl\FGLUT.H
文件 71555 1997-11-07 02:34 BallGame\gl\gl.h
文件 5150 1998-08-13 02:54 BallGame\gl\GLSMAP.H
文件 14367 1997-10-31 02:18 BallGame\gl\glu.h
文件 20844 1998-08-13 02:54 BallGame\gl\GLUT.H
文件 8874 1998-08-13 02:54 BallGame\gl\TUBE.H
文件 180224 1999-07-29 15:48 BallGame\GLUT32.DLL
文件 27096 1999-07-29 15:48 BallGame\GLUT32.LIB
文件 35606 1997-10-31 02:18 BallGame\lib\glu.lib
文件 11056 1998-08-13 02:49 BallGame\lib\GLUT\capturexfont.c
文件 2277 1998-08-13 02:46 BallGame\lib\GLUT\GLUT.DEF
文件 180224 1999-07-29 15:48 BallGame\lib\GLUT\GLUT32.DLL
文件 17306 1999-07-29 15:48 BallGame\lib\GLUT\GLUT32.EXP
............此处省略79个文件信息
- 上一篇:风电功率预测的数学建模
- 下一篇:la
yerAdmin框架.rar
相关资源
- OpenGL参考手册
- MFC程序-碰撞的小球
- Qt Creator opengl实现四元数鼠标控制轨迹
- OpenGL文档,api大全,可直接查询函数
- opengl轮廓字体源代码
- MFC读三维模型obj文件
- 利用OpenGL写毛笔字算法
- MFC中OpenGL面和体的绘制以及动画效果
- 基于OPENGL的光线跟踪源代码368758
- VC 实现三维旋转(源码)
- 自编用openGL实现3D分形树,分形山
- OpenGL球形贴图自旋程序
- OpenGL导入贴图的Texture类
- 计算机图形学(openGL)代码
- 用OpenGL开发的机械臂运动仿真程序(
- OpenGL-3D坦克模拟
- OPENGL实现世界上最小的3D游戏
- VS2012OpenGL配置所需要的全部libdllh文件
- 易语言画圆算法源码
- 基于OpenGL的仿蝗虫机器人三维动态仿
- 图形学 - OpenGL实现3种三维茶壶显示源
- opengl程序-会跳舞的骷髅
- opengl实现三维网格光顺Laplacian算法
- opengl——爆炸
- OpenGL三维地形建模
- opengl游戏编程徐明亮版(含源码)
- 用OPENGL画的一个简单的直升飞机
- opengl完美天空盒
- 3D绘图程序设计:使用Direct3D 10/9和Ope
- OpenGL绘制可运动自行车源程序.zip
评论
共有 条评论