OpenGL 实现模拟太阳系运动
2017-01-05 15:42
369 查看
#include <gl/glut.h> static int year = 0, day = 0; static int sun = 0; void init() { glClearColor(0.0, 0.0, 0.0, 0.0); glShadeModel(GL_FLAT); } void display() { glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0, 1.0, 1.0); glPushMatrix(); glRotatef((GLfloat)sun, 0.0, 1.0, 0.0); glutWireSphere(1.0, 20, 16); glRotatef((GLfloat)year, 0.0, 1.0, 0.0); glTranslatef(2.0, 0.0, 0.0); glRotatef((GLfloat) day, 0.0, 1.0, 0.0); glutWireSphere(0.2, 10, 8); glPopMatrix(); glutSwapBuffers(); } void reshape(int w, int h) { glViewport(0, 0, (GLsizei)w, (GLsizei)h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(60.0, (GLfloat)w / (GLfloat)h, 1.0, 20.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); } void keyboard(unsigned char key, int x, int y) { switch (key) { case 'd': day = (day + 10) % 360; sun = (sun + 1) % 360; glutPostRedisplay(); break; case 'D': day = (day - 10) % 360; sun = (sun + 1) % 360; glutPostRedisplay(); break; case 'y': year = (year + 5) % 360; sun = (sun + 1) % 360; glutPostRedisplay(); break; case 'Y': year = (year - 5) % 360; sun = (sun + 1) % 360; glutPostRedisplay(); break; default: break; } } int main(int argc, char **argv) { glutInit(&argc, argv); glutInitWindowSize(500, 500); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); glutInitWindowPosition(100, 100); glutCreateWindow(argv[0]); init(); glutDisplayFunc(display); glutReshapeFunc(reshape); glutKeyboardFunc(keyboard); glutMainLoop(); return 0; }
太阳系会自己转动,行星会自传以及绕着太阳进行旋转,因此行星先进性绕着太阳的转动在全局坐标系进行旋转,之后偏移到指定的位置,然后在自己的局部坐标系中进行自传
相关文章推荐
- OpenGL简单实现太阳系模拟
- OpenCV实现运动模糊图像的模拟
- 【转】OpenGL实现太阳系模型
- 基于Opengl的太阳系动画实现
- 数值模拟实时三维可视化的C#与OpenGL实现
- 【OpenGL】模拟太阳系
- OpenGL实现太阳系模型 —— Juwend
- OpenGL(5)--太阳系和的日月地实现
- C++实现BP 神经网络模拟二维机械臂运动_智能计算期末2
- java实现椭圆运动(太阳系)
- OpenGL编程指南10:组合运动示例1—创建太阳系模型
- OpenGL 简易太阳系模拟 总结
- 关于OpenGL入门中地球,月亮,太阳运动模拟无法显示的问题(只显示黑框)
- OpenGL模拟太阳系运行
- jquery模拟实现鼠标指针停止运动事件
- java学习之java模拟太阳系简单实现
- Java编程实现的模拟行星运动示例
- 使用“天地图”实现“百度地图”的 GPS单点沿线运动,来模拟物体运动轨迹。
- [OpenGL] 水面波动场景模拟 - 基于Gerstnder波实现
- 基于C#的2D太阳、地球、月亮运动轨迹模拟实现