资源简介
用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三维坐标绘制
- openGL做的小球三维碰撞检测程序
- OpenGL飞机飞行模拟
- OPENGL写的四面体纹理贴图
- OpenGL 场景漫游
- opengl_shader_鱼眼校正的(demo)
- opengl与QT实现天空盒
- OpenGL程序构造天空和地面
- opengl的OpenGL教程中文版
- VC点云数据显示,OPENGL图像渲染.rar
- openGL实现地球自动围绕太阳转
- 史上最全OpenGL文件安装包
- 第一个3d建模的demo
- OpenGL开发库完整版
- 计算机图形学直线画圆多边形
- 用openGL实现的3D国际象棋游戏源码
- Opengl写的摩天轮源码
- OpenGL3.3官方文档
- 碰撞检测毕业论文
- OpenGL库文件完整版
- source code for Computer Graphics: Programming
- opengl 实现水波纹
- openGL bunny 画兔子
- 3D物理传感器游戏——小球快跑
- opengl glee
- 史上最全OpenGL库文件
- opengl做的飞机模型
- openglbible中需要的gltools.h及.a文件
- QT使用OpenGL显示YUV420和YUV444数据,内附
- opengl迷宫游戏
评论
共有 条评论