资源简介
利用OpenGL 实现自行车的运动模拟,主要包括车轮的旋转,自行车的向前运动等

代码片段和文件信息
#include
#include
#include
#define PI 3.1415926
GLfloat t=0.0;
GLfloat theta=0.0;
void init(){
glClearColor(1.0f1.0f1.0f1.0f);
glShadeModel(GL_PROJECTION);
gluOrtho2D(0.0800.00.0400.0);
glClear(GL_COLOR_BUFFER_BIT);
}
void drawcircle(double xdouble ydouble r){ //画车轮
glBegin(GL_LINE_LOOP);
for(int i=0;i<30;i++){
double delta=2*PI*i/30;
glColor3f(010);
glVertex2f(x+r*cos(delta+theta)y+r*sin(delta+theta)); //车轮外圈
glVertex2f(xy);
glVertex2f(x+r*cos(delta+theta)y+r*sin(delta+theta)); //车轴
}
glEnd();
}
void drawBicycle(double xdouble y){
glLineWidth(10.0); //地面
glBegin(GL_QUADS);
glColor3f(0.00.00.0);
glVertex2f(0.060.0);
glVertex2f(0.00.0);
glVertex2f(1200.00.0);
glVertex2f(1200.060.0);
glEnd();
glTranslatef(t 0.0f 0.0f);
glLineWidth(3.0);
glBegin(GL_LINES); //车横梁
glColor3f(0.00.01.0);
glVertex2f(30.0+x30.0+y);
glVertex2f(130.0+x30.0+y);
glEnd();
glBegin(GL_LINES); //车座
glVertex2f(70.0+x30.0+y);
glVertex2f(70.0+x60.0+y);
glEnd();
glBegin(GL_LINES);
glColor3f(1.00.00.0);
glVertex2f(62.5+x60.0+y);
glVertex2f(77.5+x60.0+y);
glEnd();
glBegin(GL_LINES); //车把
glColor3f(0.00.01.0);
glVertex2f(90.0+x30.0+y);
glVertex2f(90.0+x70.0+y);
glEnd();
glBegin(GL_LINES);
glColor3f(0.00.00.0);
glVertex2f(82.5+x70.0+y);
glVertex2f(97.5+x70.0+y);
glVertex2f(82.5+x70.0+y);
glVertex2f(75.5+x72.0+y);
glVertex2f(97.5+x70.0+y);
glVertex2f(87.5+x72.5+y);
glEnd();
drawcircle(30+x30+y30); //后车轮
drawcircle(130+x30+y30); //前车轮
theta+=30.0f;
if( theta > 360.0f)
theta = 0.0f; //车轮旋转变化
t+=0.05f;
if( t > 800.0f)
t = 0.0f; //车身平移变化
glutPostRedisplay();
}
void display(){
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
drawBicycle(050); //小车的位置可调
glFlush();
glutSwapBuffers();
}
void reshape(int w int h)
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0800.00.0400.0);
glClear(GL_COLOR_BUFFER_BIT);
}
int main(int argc char** argv){
glutInit(&argc argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
glutInitWindowSize(1200600);
glutCreateWindow(“自行车“);
glutReshapeFunc(reshape);
glutDisplayFunc(display);
init();
glutMainLoop();
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2411 2015-05-05 14:06 运动的自行车\自行车.cpp
文件 32768 2015-05-05 11:30 运动的自行车\自行车.exe
文件 95628 2015-05-05 12:01 运动的自行车\自行车.PNG
目录 0 2015-05-10 23:14 运动的自行车
----------- --------- ---------- ----- ----
130807 4
- 上一篇:时钟绘制OpenGL
- 下一篇:微软API放大镜
相关资源
- OpenGL参考手册
- 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
- OpenGL实现飘动效果
- opengl室内场景的绘制,包括碰撞检测
评论
共有 条评论